【问题标题】:Disable changes on seekbar by client禁用客户端对搜索栏的更改
【发布时间】:2023-03-23 21:56:01
【问题描述】:

我有一个 SeekBar,它会在我需要时更改进度,但我不希望用户能够手动更改它。

我尝试将 SeekBar 设置为:

<SeekBar
        android:id="@+id/seekBar1"
        android:layout_width="match_parent"
        android:layout_height="65dp"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="78dp"
        android:progress="10"
        android:max="100"
        android:clickable="false"
        android:thumb="@drawable/transparent"
        android:progressDrawable="@drawable/customprogressbar" />

但它不起作用。

我该怎么做?


这或多或少是客户如何看待这一点的一个例子。

我使用了自定义样式,因为将来我需要根据 SeekBar 所在的部分更改背景图像和进度。

谢谢大家!

【问题讨论】:

标签: android custom-controls seekbar


【解决方案1】:

您可以使用 android:enabled="false" ,但它会显示 禁用效果 [使搜索栏变暗]。

因此,如果您想显示启用搜索栏而不响应拇指活动,请实现触摸事件处理程序并返回 true,如下所示。

seekBar.setOnTouchListener(new OnTouchListener(){
  @Override
  public boolean onTouch(View v, MotionEvent event) {
    return true;
 }
});

【讨论】:

  • 如何返回默认的onTouch 行为?说我是否需要根据类型启用和禁用触摸。
  • kotlin 答案:seekBar1.setOnTouchListener { _: View?, _: MotionEvent? -> 真 }
【解决方案2】:

您可以做的一件事是禁用 搜索栏, 赞seekbar.setEnabled(false)

这样做框架不会接受任何 来自用户和您的触摸事件 只能通过代码更改进度级别。

希望对你有帮助.......

【讨论】:

  • 尽管您可能希望包含一个自定义可绘制对象,因为将搜索栏设置为禁用会改变搜索栏的外观。
  • @Arjun,我已经测试了你对我的建议,它有效;)谢谢!
  • 我希望搜索栏只能通过拇指移动并禁用点击。怎么办?
【解决方案3】:

只需从 CustomSeekBar 类的 onTouch 方法返回 false。

希望这行得通!

【讨论】:

    【解决方案4】:

    因此,如果您想显示启用搜索栏而不响应拇指活动,请实现触摸事件处理程序并返回 true,如下所示。

      seekBar.setOnTouchListener(new OnTouchListener()
      {
         @Override
         public boolean onTouch(View v, MotionEvent event) 
         {
            return true;
         }
      });
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-20
      • 2011-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-08
      • 2021-05-04
      相关资源
      最近更新 更多