安卓如何去除SeekBar背景

10

有没有办法在SeekBar Android小部件中删除背景条图像?

我只想显示一个没有进度条的滑块。

Remove this

有什么帮助吗?

5个回答

39

有一种更简单的方法,不需要创建新的drawable。只需在xml定义中设置以下内容:

android:progressDrawable="@android:color/transparent"

或者如果你想在代码中完成它:

mySlider.setProgressDrawable(new ColorDrawable(android.R.color.transparent));

比起@GuyNoir上面的解决方案,这个更好,因为它不需要创建一个人工的“无形可见的drawable”。 - Guy
只需注意:您不能使用 #0000,但使用@android:color/transparent可以起作用。 - sidon
但是这也会在Holo Light主题上移除水平线。我想保留它。 - lalitm
@lalitm,我不确定你的意思。OP想要移除这个条并只保留选项卡。水平线不就是Holo Light中该条的等价物吗?我猜最好的做法是发布一个新问题,并包含你想要做的图片。或者也许下面CommonsWare的答案就是你想要的? - Pooks

5

我解决了自己的问题。

要去除背景,您需要创建一个空白的可绘制对象,并将其设置为progressDrawable:

satBar.setProgressDrawable(invisibleBackground);

将其设置为null似乎没有效果。

3

我有一个问题。背景可绘制对象实际上在栏本身后面。我需要一种方法来删除该栏(并更改滑块的图像)。 - Kleptine
如何在此之后恢复到初始状态?谢谢。 - Paul
1
@Paul:尝试先调用getBackground(),将结果保存在某个地方,然后通过setBackgroundDrawable()恢复它。尽管名称不完全相同,但getBackground()返回一个Drawable - CommonsWare
很遗憾,它没有起作用......我在这里发布了一个明确与此问题相关的问题:http://stackoverflow.com/questions/14054548/seekbar-programatically-change-indeterminate-mode 谢谢。 - Paul

2

一种实现这个目标的方法是将进度条的颜色改为背景颜色。您需要使用自定义布局。

<SeekBar
  android:layout_width="350px"
  android:layout_height="25px"
  android:layout_margin="30px"
  android:layout_x="60px"
  android:layout_y="185px"
  android:id="@+id/seekbar"
  android:progressDrawable="@drawable/myprogress"
/>

下面是一个自定义布局 - 尝试改变颜色:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

<item android:id="@android:id/background">
<shape>
    <corners android:radius="5dip" />
    <gradient
            android:startColor="#ff9d9e9d"
            android:centerColor="#ff5a5d5a"
            android:centerY="0.75"
            android:endColor="#ff747674"
            android:angle="270"
    />
</shape>
</item>


<item
android:id="@android:id/progress"
>
<clip>
    <shape>
        <corners
            android:radius="5dip" />
        <gradient
            android:startColor="#9191FE"
            android:centerColor="#9191FE"
            android:centerY="0.75"
            android:endColor="#9191FE"
            android:angle="270" />
    </shape>
</clip>
</item>


0
创建一个名为 seekbar_progress.xml 的 XML 文件,并将其放置在 drawable 文件夹中。其中,条纹是一张图片,请将其放置在 drawable 文件夹中。

seekbar_progress.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >  

  <item>
    <clip>
    <bitmap xmlns:android="http://schemas.android.com/apk/res/android"
        android:src="@drawable/stripes"
        android:tileMode="repeat"
        android:antialias="true"
        android:dither="true"
        android:filter="false"
        android:gravity="left"
    />
    </clip>
</item>
</layer-list>

现在,在您的main xml文件中,包含seekbar代码,取一张图片并存储在drawable文件夹中。这里的seekbar是一张图片。

    <SeekBar
             android:id="@+id/seekbar"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:background="@drawable/seekbar"
             android:progressDrawable="@drawable/seekbar_progress"/>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接