【问题标题】:Android SeekBar thumb gets clipped/cut offAndroid SeekBar 拇指被剪断/切断
【发布时间】:2010-05-26 11:47:42
【问题描述】:

当使用带有SeekBar 视图的自定义拇指可绘制对象时,拇指可绘制对象在视图的左右边缘被剪裁。

如何解决此问题?

【问题讨论】:

    标签: android android-seekbar


    【解决方案1】:

    您应该能够通过将SeekBar 上的paddingLeftpaddingRight 设置为拇指宽度的一半来解决此问题(请记住使用与密度无关的单位)。您还可以通过调用setThumbOffset 来控制搜索栏拇指边缘允许的空间。

    【讨论】:

    • @Hurda mdpi (holo) 大小为 32x32,mdpi (pre-holo) 为 32x29
    • 注意,如果你使用 VerticalSeekBars,你仍然使用 paddingRight & paddingLeft
    • 这发生在我身上,即使没有自定义拇指可绘制对象,只是使用基于平台版本的不同主题。将paddingLeftpaddingRight 设置为16dp 似乎是确保它适用于所有标准主题的所有版本的方法。
    • @Roman Nurik paddingLeft 和 paddingRight 没有为我的搜索栏做任何事情
    • 添加 android:thumbOffset="-0dp" 对我有用
    【解决方案2】:

    我自己也遇到了这个问题,我相信 "correct" 的决定是将android:thumbOffset 修改为 SeekBar 的默认样式,将其设置为 8px .

    【讨论】:

    • +1!我的设计师会喜欢这种方法,所以现在我们的滑块轨道可以左右对齐,如预期的那样。感谢您的提示!
    • android:thumbOffset 对 2.3.3 没有影响。我不得不使用填充。
    • android:thumOffset 对 2.3.3 没有影响,但可以使用 setThumbOffset 方法。
    • 这实际上是正确而有用的答案,非常感谢!
    【解决方案3】:

    对于默认的 SeekBar,我使用了这些设置并且效果很好:

    android:paddingLeft="6dp"
    android:paddingRight="6dp"
    
    android:thumbOffset="8dp"
    

    【讨论】:

      【解决方案4】:

      只是为了澄清。

      在我见过的一些地方

       android:thumbOffset="8dp"
      

      还有一些

      android:thumbOffset="8px"
      

      所以我查看了源代码。这是原来的风格

      <style name="Widget.SeekBar">
              <item name="android:indeterminateOnly">false</item>
              <item name="android:progressDrawable">@android:drawable/progress_horizontal</item>
              <item name="android:indeterminateDrawable">@android:drawable/progress_horizontal</item>
              <item name="android:minHeight">20dip</item>
              <item name="android:maxHeight">20dip</item>
              <item name="android:thumb">@android:drawable/seek_thumb</item>
              <item name="android:thumbOffset">8dip</item>
              <item name="android:focusable">true</item>
          </style>
      

      来自

      https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/res/res/values/styles.xml

      【讨论】:

        【解决方案5】:

        我的默认搜索栏拇指底部被剪掉了。这里的修复都没有奏效。我最终使用了

             android:clipToPadding="false"
        

        在父视图上。这解决了问题。

        【讨论】:

          【解决方案6】:
          <androidx.appcompat.widget.AppCompatSeekBar
                  android:id="@+id/progress_loan_period"
                  android:layout_width="@dimen/dp_0"
                  android:layout_height="wrap_content"
                  android:layout_marginTop="@dimen/dp_15"
                  android:progressDrawable="@drawable/seek_bar"
                  android:thumb="@drawable/ic_slider"
                  android:paddingStart="@dimen/dp_0"
                  android:paddingEnd="@dimen/dp_0"
                  android:thumbOffset="-0dp"
                  app:layout_constraintStart_toStartOf="parent"
                  app:layout_constraintEnd_toEndOf="parent"
                  app:layout_constraintTop_toBottomOf="@id/label_loan_period" />
          

          这样就完成了

          【讨论】:

            【解决方案7】:

            没有什么对我有用,但我只是将拇指的颜色更改为与父布局的背景颜色不同,它对我有用。

            【讨论】: