使用搜索栏进度制作拇指的中心文本视图并移动文本视图
Posted
技术标签:
【中文标题】使用搜索栏进度制作拇指的中心文本视图并移动文本视图【英文标题】:make center text view of thumb and move text view with Seek bar progress 【发布时间】:2019-10-17 07:53:59 【问题描述】:对于 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_
android:layout_
android:layout_gravity="start"
android:background="#ffff00"/>
<SeekBar
android:id="@+id/previewSeekBar"
android:layout_
android:layout_
android:layout_marginTop="100dp"
android:min="1"
android:max="10"/>
</RelativeLayout>
预期
-
Textview 应该随着搜索栏的进度移动。
Textview 应该像屏幕截图一样位于拇指中心和搜索栏上方。
当进度> 文本视图宽度/2 && 进度时,文本视图应该移动
【问题讨论】:
逻辑用于获取 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 ); 请按照“您解释的逻辑”格式化您的代码。很难理解你的逻辑。您只需为文本视图设置正确的 X/Y 值,或者您可以翻译它们。基本逻辑是计算正确的 X 和 Y 值 【参考方案1】:抱歉,回答晚了,您的逻辑是正确的,但需要少量更改。
float thumbPos = width * (seekBar.getProgress() / (float)seekBar.getMax())
textView.setTranslationX(thumbPos) ;
seekBar.getProgress()
是 int
和 seekBar.getMax()
也是 int
,如果将它们分开,它们将返回 整数值,但我们需要 float(十进制)这就是我添加更改的原因
【讨论】:
Rahul 感谢您的回复,但即使将 int 更改为 float 也无法正常工作。您能提供一些示例吗? 嗨 Kalpana 我已经上传了一个示例项目,请运行应用程序并检查 MainActivity.kt url - github.com/iamdangerous/TranslateTextWithSeekbar中的代码以上是关于使用搜索栏进度制作拇指的中心文本视图并移动文本视图的主要内容,如果未能解决你的问题,请参考以下文章