Java 使拇指的文本视图居中,并使用搜索栏进度移动文本视图
对于AndroidTV,我创建了一个简单的搜索栏和文本视图。我正在尝试对齐搜索栏拇指的文本视图,并尝试随着进度移动Java 使拇指的文本视图居中,并使用搜索栏进度移动文本视图,java,android,login,android-tv,Java,Android,Login,Android Tv,对于AndroidTV,我创建了一个简单的搜索栏和文本视图。我正在尝试对齐搜索栏拇指的文本视图,并尝试随着进度移动 <TextView android:id="@+id/textView" android:layout_width="160dp" android:layout_height="90dp" android:layout_gravity="start" android:background=
<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>
尝试了这些解决方案,但不起作用
<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>
示例代码获取文本视图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 );
}
}
}
<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>
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>
期望
<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>
很抱歉回答得太晚,您的逻辑是正确的,但它只需要很少的更改
<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>
float thumbPos = width * (seekBar.getProgress() / (float)seekBar.getMax())
textView.setTranslationX(thumbPos) ;
seekBar.getProgress()
是一个int
,seekBar.getMax()
也是一个int
,如果除以它们,它们将返回整数值,但我们需要浮点(十进制),这就是为什么我添加了用于获取x位置seekBar.setonseekbarchengelistener的更改逻辑(新SeekBar.onseekbarchaneglistener(){@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.getMax();textView.setX(width);})请将您的代码格式化为“您解释的逻辑”。很难理解你的逻辑。你只需要在文本视图中设置正确的X/Y值,或者你可以翻译它们。基本逻辑是计算X和YRahul的正确值。谢谢你的回复,但即使将int更改为float,它也不起作用。你能给一些示例吗?嗨,Kalpana,我已经上传了一个示例项目,请运行e应用程序&检查MainActivity.kt url中的代码-
<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>