java - 如何将 Textview 自动移动到 android Seekbar 拇指下方?

标签 java android seekbar

我有自定义的Seekbar,它显示运输状态,其下方的TextView显示包裹( cargo )的位置。我想要的只是自动移动文本用拇指而不触摸Seekbar,我尝试了不同的解决方案,但没有人工作,我不知道是否可以做到这一点,如果有人可以帮助我将非常感谢他。

My output

enter image description here

MyCode:

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"
            />

最佳答案

问题在这里:

        txtStatus.setX(displacement);

不要使用此方法更改 View 位置。相反,使用标准布局参数并编辑边距(在本例中为 marginLeft)并调整它以实现您的目标。

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

关于java - 如何将 Textview 自动移动到 android Seekbar 拇指下方?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61288955/

相关文章:

android - 屏幕亮度搜索栏不工作

java - Jackson 如果 JSON 数组中存在某个值,则不解析整个项目

java - 带复选框的 vaadin8.1.0 网格有问题

Android Studio 撤消 (Ctrl-Z)/重做 (Ctrl-Y) 不起作用

android - 使用自定义属性创建默认样式

java - 无法启动 Activity ComponentInfo : Error inflating class android. support.design.widget.CoordinatorLayout

java - 我无法执行 JWinAuto 的许多 API。有谁能够实现所有 API 吗?

java - 如果在 android 2.0 中以编程方式生成,则 Android Spinner 呈现不正确

android - 自定义 Seekbar 拇指垂直位置问题

android - 如何禁用音频 Controller 的搜索栏