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

时间:2019-05-31 16:44:16

标签: java android login 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 );
        }
    }
}

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>

预期

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

1 个答案:

答案 0 :(得分:0)

很抱歉,您的逻辑是正确的,但需要的更改很少。

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

textView.setTranslationX(thumbPos) ;

seekBar.getProgress()int,而seekBar.getMax()也是int,如果将它们相除,它们将返回整数值,但是我们需要< strong> float (以十进制表示),这就是为什么我添加了更改