如何在Android中自定义SeekBar的外观?

时间:2010-07-06 14:32:30

标签: android seekbar

我在我的应用程序中使用SeekBar,我想稍微自定义它。我已经想出了如何更改拇指和背景的Drawable

我的问题是如何更改SeekBar的大小?如果我只是更改SeekBar like this, the查看is only clipped and it only shows the top piece of the SeekBar`的高度:

<SeekBar
   android:layout_height="10dip"
   style="@style/seekbar_style" />

如何更改Seekbar的整体尺寸?我希望它比标准SeekBar更薄。

2 个答案:

答案 0 :(得分:23)

您确实拥有与搜索栏相同的进度条:

  <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">8px</item>
    <item name="android:focusable">true</item>
  </style>

所以你可能想要覆盖所有这些并按照自己的方式去做,就像你为标题栏所做的那样,通过定义你自己的风格。

答案 1 :(得分:13)

我不确定Seekbars,但可以使用自定义样式(在styles.xml中定义)来自定义Progressbars,如下所示:

<style name="MyCustomProgressStyle">
    <item name="android:indeterminateOnly">false</item>
    <item name="android:progressDrawable">@drawable/custom_progress_drawable</item>
    <item name="android:indeterminateDrawable">@android:drawable/progress_indeterminate_horizontal</item>
    <item name="android:minHeight">10dip</item>
    <item name="android:maxHeight">10dip</item>
</style>

然后你可以根据android系统的progress_horizontal.xml设置一个自定义drawable(它位于AOSP checkoutframeworks/base/core/res/drawable文件夹中)。这是来自开源项目的an example