在安卓中自定义进度条

7

我想自定义 Android 中的 seekbar。

enter image description here

有人能指导我如何做吗?我是 Android 新手。


1
看起来是一个重复的问题,与https://dev59.com/L3A75IYBdhLWcg3wFE6b相同。 - Asahi
您需要什么样的定制化,能否具体说明一下? - midhunhk
3个回答

18
<SeekBar
                android:id="@+id/seekBar1"
                android:layout_width="match_parent"
                android:layout_height="34dip"
                android:progressDrawable="@drawable/strip"
                android:thumb="@drawable/icon_small"
                android:layout_weight="3.0" />

您可以简单地设置progressDrawable、thumb和background属性,然后您将获得所有您想要的内容。


3
这是一个如何实现的示例: http://www.mokasocial.com/2011/02/create-a-custom-styled-ui-slider-seekbar-in-android/ - Ashok Goli

2
// ------------ custom seekbar
 LayerDrawable layer = (LayerDrawable) verticalSeekBar_1
 .getProgressDrawable();

 Drawable draw1 = (Drawable) layer
 .findDrawableByLayerId(android.R.id.progress);

 Bitmap bitmap1 = BitmapFactory.decodeResource(getApplicationContext()
 .getResources(), R.drawable.scroll_on);

 draw1 = new ClipDrawable(new BitmapDrawable(bitmap1),
 Gravity.AXIS_PULL_BEFORE, ClipDrawable.HORIZONTAL);

 layer.setDrawableByLayerId(android.R.id.progress, draw1);

 Drawable draw2 = (Drawable) layer
 .findDrawableByLayerId(android.R.id.background);

 Bitmap bitmap2 = BitmapFactory.decodeResource(getApplicationContext()
 .getResources(), R.drawable.scroll_off);

 draw2 = new BitmapDrawable(bitmap2);
 layer.setDrawableByLayerId(android.R.id.background, draw2);

// --------------

非常好。由于图像可能来自网络,因此我必须知道如何以编程方式而不是在XML中自定义seekbar。 - Yeung

1
XML代码
 <SeekBar
    android:id="@+id/seekBar1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" 
    android:progressDrawable="@drawable/seek_bar"
    android:paddingLeft="15dp"
    android:paddingRight="15dp"
    android:thumb="@drawable/thumbler_small"
    android:indeterminate="false" />

seek_bar.xml

 <?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:id="@+android:id/SecondaryProgress"
        android:drawable="@drawable/first"/>
    <item
        android:id="@+android:id/progress"
        android:drawable="@drawable/second"/>
</layer-list>

第一个可绘制对象为空或显示不完整的颜色区域。

第二个可绘制对象是填充或色彩完整的区域。

this 链接可以帮助您更多地了解。


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