Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使拇指的文本视图居中,并使用搜索栏进度移动文本视图_Java_Android_Login_Android Tv - Fatal编程技术网

Java 使拇指的文本视图居中,并使用搜索栏进度移动文本视图

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=

对于AndroidTV,我创建了一个简单的搜索栏和文本视图。我正在尝试对齐搜索栏拇指的文本视图,并尝试随着进度移动

    <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应随搜索栏进度移动
  • 文本视图应该在拇指的中心和搜索栏的上方,如屏幕截图所示
  • 当进度>文本视图宽度/2和进度时,文本视图应移动(&P)
    很抱歉回答得太晚,您的逻辑是正确的,但它只需要很少的更改

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