сделать центральный текстовый вид большого пальца и переместить текстовый просмотр с прогрессом панели поиска - PullRequest
0 голосов
/ 31 мая 2019

Для AndroidTV я создал простую панель поиска и текстовое представление. Я пытаюсь выровнять текстовое представление большого пальца панели поиска и пытаюсь двигаться с прогрессом.

Опробовал эти решения, но он не работает link1 , link2

Пример кода
логика для получения 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. Текстовое представление должно двигаться с прогрессом панели поиска.
  2. Текстовое представление должно быть в центре большого пальца и над строкой поиска, как на скриншоте.
  3. Текстовое представление должно двигаться, когда прогресс> ширина текстового просмотра / 2 && progress

1 Ответ

0 голосов
/ 01 июня 2019

Извините за поздний ответ, ваша логика верна, но требует немного изменений.

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

textView.setTranslationX(thumbPos) ;

seekBar.getProgress() является int и seekBar.getMax() также является int, если их разделить, они вернут целочисленное значение , но нам нужно с плавающей запятой (в десятичном формате ) вот почему я добавил изменения

...