动态生成的ProgressBars / Widgets的自定义样式

时间:2014-04-08 00:05:26

标签: android android-widget android-progressbar android-styles

如何使用styles.xml创建自定义水平ProgressBar样式,然后在创建ProgressBar时使用它,如下所示:

ProgressBar bar = new ProgressBar(this, null, ???)

我所看到的所有教程都侧重于在XML布局中定义窗口小部件时附加样式,这不是我需要的。我尝试过混合教程,但是当我尝试通过android.R调用我的样式时我迷路了,修改样式的方法似乎有所不同,具体取决于你在代码中的位置。

基本上我想这样做:

http://www.tiemenschut.com/how-to-customize-android-progress-bars/#comment-203

在styles.xml中

1 个答案:

答案 0 :(得分:0)

原来我想要的是Drawable。

这有助于:http://www.learn-android-easily.com/2013/05/custom-progress-bar-in-android.html

然后我发现了这个,这也有所帮助:http://www.learn-android-easily.com/2013/05/custom-progress-bar-in-android.html

我在我创建的新文件夹中自定义了一个XML文件:res / drawable / custombar.xml,然后像网站一样自定义它:

<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <!-- Define the background properties like color etc -->
    <item android:id="@android:id/background">
        <shape>
            <corners 
                android:radius="5dip"
            />
            <gradient
                android:angle="270"
                android:centerColor="#ff5a5d5a"
                android:centerY="0.5"
                android:endColor="#ff747674"
                android:startColor="#ff9d9e9d" />
        </shape>
    </item>

    <!-- Define the progress properties like start color, end color etc -->
    <item android:id="@android:id/progress">
        <clip>
            <shape>
                <corners android:radius="5dip"/>
                <gradient
                    android:angle="0"
                    android:endColor="#ff009900"
                    android:startColor="#ff000099" />
            </shape>
        </clip>
    </item>

然后将其设置为我的Activity中的ProgressBar,如下所示:

ProgressBar bar = new ProgressBar(this, null, android.R.style.Widget_ProgressBar_Horizontal);
bar.setProgressDrawable(getResources().getDrawable(R.drawable.custom_progressbar));

希望这可以帮助一些人。