Как автоматически переместить Textview ниже android Seekbar thumb? - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть пользовательский Панель поиска , которая показывает статус доставки, а под ней TextView , которая показывает местоположение пакета (товара). Все, что я хочу, это автоматически перемещать текст вместе с большим пальцем не касаясь Seekbar , я пробовал разные решения, но никто не работал, я не знаю, возможно ли это сделать или нет, если кто-то может помочь, я буду ему очень благодарен.

Мой вывод

enter image description here

Мой код:

private void setProgress(int statusNum) {
            switch (statusNum) {
                case 1:
                    seekBar.setProgress(1);
                    break;
                case 2:
                    seekBar.setProgress(2);
                    break;
                case 3:
                    seekBar.setProgress(3);
                    break;
                case 4:
                    seekBar.setProgress(4);
                    break;
                case 5:
                    seekBar.setProgress(5);
                    break;
                case 6:
                    seekBar.setProgress(6);
                    break;
                case 7:
                    seekBar.setProgress(7);
                    break;
                case 8:
                    seekBar.setProgress(8);
                    break;

            }
            int seekBarWidth = seekBar.getWidth() - seekBar.getPaddingLeft() - seekBar.getPaddingRight();
            float displacement = seekBarWidth * (seekBar.getProgress() / seekBar.getMax());
            txtStatus.setX(displacement);
        }

РЕДАКТИРОВАТЬ: Добавлено xml

    <com.warkiz.tickseekbar.TickSeekBar
            android:id="@+id/seekbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:tsb_ticks_count="8"
            app:tsb_thumb_color="@color/colorAccent"
            app:tsb_thumb_size="12dp"
            app:tsb_show_tick_marks_type="oval"
            app:tsb_tick_marks_color="#33000000"
            app:tsb_tick_marks_size="6dp"
            app:tsb_track_background_color="#1A00C853"
            app:tsb_track_background_size="2dp"
            android:clickable="false"
            app:tsb_progress="1.0"
            app:tsb_min="1"
            app:tsb_max="8"
            app:tsb_track_progress_color="@color/colorGreen"
            app:tsb_track_progress_size="4dp" />

        <TextView
            android:id="@+id/txt_status"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="10sp"
            android:fontFamily="sans-serif-medium"
            android:text="Прийнято"
            android:textColor="@color/colorGreen"
            android:textAlignment="center"
            android:layout_below="@id/seekbar"
            />

1 Ответ

0 голосов
/ 18 апреля 2020

Проблема здесь:

        txtStatus.setX(displacement);

Не изменить позицию зрения с помощью этого метода. Вместо этого используйте стандартные параметры макета и отредактируйте поля (в данном случае marginLeft) и настройте их для достижения своей цели.

ViewGroup.MarginLayoutParams p = (ViewGroup.MarginLayoutParams) txtStatus.getLayoutParams();
p.marginLeft = someValue;
txtStatus.requestLayout();
...