使拇指的中心文本视图并使用搜索栏进度移动文本视图

Kal*_*ahu 3 java authentication android android-tv

对于 AndroidTV,我创建了一个简单的搜索栏和文本视图。我正在尝试对齐搜索栏拇指的文本视图并尝试随着进度移动。

尝试了这些解决方案,但它不起作用link1link2


获取文本视图的 x 位置的示例代码逻辑

seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
    @Override
    public void onProgressChanged(final SeekBar seekBar, final int progress, boolean fromUser) {
        if (fromUser) {
            int width = seekBar.getWidth()
                        - seekBar.getPaddingLeft()
                        - seekBar.getPaddingRight();
            float thumbPos = width
                             * seekBar.getProgress()
                             / seekBar.getMax();
            textView.setX(width );
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

XML

    <TextView
        android:id="@+id/textView"
        android:layout_width="160dp"
        android:layout_height="90dp"
        android:layout_gravity="start"
        android:background="#ffff00"/>

  <SeekBar
        android:id="@+id/previewSeekBar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="100dp"
        android:min="1"
        android:max="10"/>

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

预期的

  1. Textview 应随着搜索栏的进度而移动。
  2. Textview 应位于拇指中心和搜索栏上方,如屏幕截图所示。
  3. 当进度 > 文本视图宽度/2 && 进度时,文本视图应该移动

Rah*_*hra 5

抱歉回答晚了,您的逻辑是正确的,但需要进行一些更改。

float thumbPos = width * (seekBar.getProgress() / (float)seekBar.getMax())

textView.setTranslationX(thumbPos) ;
Run Code Online (Sandbox Code Playgroud)

seekBar.getProgress()是一个int并且seekBar.getMax()也是一个int,如果将它们相除,它们将返回整数值,但是我们需要浮点数(十进制),这就是我添加更改的原因

  • 您好,Kalpana,我已经上传了一个示例项目,请运行该应用程序并检查 MainActivity.kt url 中的代码 - https://github.com/iamdangerous/TranslateTextWithSeekbar (3认同)