让 Seekbar 拇指更容易抓取

Make Seekbar thumb easier to grab

所以我有一个 SeekBar,但是小圆圈拇指有点难以抓住。有没有办法让碰撞箱变大?我不一定关心图形本身是否有任何不同——我只是希望它易于抓取。

查看这个很棒的 Seekbar 库 DiscreteSeekBar

并且可以通过以下方式轻松添加

<org.adw.library.widgets.discreteseekbar.DiscreteSeekBar
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:dsb_min="2"
        app:dsb_max="15"
/>

它还具有以下属性。

dsb_progressColor: color/colorStateList for the progress bar and thumb drawable
dsb_trackColor: color/colorStateList for the track drawable
dsb_indicatorTextAppearance: TextAppearance for the bubble indicator
dsb_indicatorColor: color/colorStateList for the bubble shaped drawable
dsb_indicatorElevation: related to android:elevation. Will only be used on API level 21+
dsb_rippleColor: color/colorStateList for the ripple drawable seen when pressing the thumb. (Yes, it does a kind of "ripple" on API levels lower than 21 and a real RippleDrawable for 21+.
dsb_trackHeight: dimension for the height of the track drawable.
dsb_scrubberHeight: dimension for the height of the scrubber (selected area) drawable.
dsb_thumbSize: dimension for the size of the thumb drawable.
dsb_indicatorSeparation: dimension for the vertical distance from the thumb to the indicator.

库中的其他 SeekBar 组件是 these

您可以通过更改缩略图的大小来自定义搜索栏,由 Andrew 回答。 创建以形状作为占位符的分层绘图 thumb_image.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
    <shape>
        <size
            android:height="40dp"
            android:width="40dp" />

        <solid android:color="@android:color/transparent" />
    </shape>
</item>
<item android:drawable="@drawable/scrubber_control_normal_holo"/>
</layer-list>

示例显示如下结果。

<SeekBar
android:id="@+id/seekBar1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:thumb="@drawable/thumb_image" />

Thumb 自定义的另一个很好的例子。

您需要插入可绘制资源。这个问题 "Offset shape within a ShapeDrawable" 的答案恰好是同一件事,你在问。与其他答案一样,如果它是私有的,您仍然需要复制目标可绘制对象。

优点(或缺点)是,这会准确显示您将大小增加了多少,而不是总大小。另外,我认为它可以节省内存,因为使用透明形状将创建该大小的透明位图 (?)。