Android - 以编程方式创建视图progressBar

时间:2011-01-24 16:08:47

标签: java android layout progress-bar

如何在没有XML的情况下创建水平progessBar或如何在没有XML contentView的情况下声明XML属性?

我在.java文件中有布局,我想将progressBar设置为水平并设置其宽度/位置。

RelativeLayout fv = new RelativeLayout(this);
panel = new Panel(this);
fv.addView(panel);
ProgressBar pb = new ProgressBar(this);
//pb.? - progress bar parameters
fv.addView(pb);
setContentView(fv);

哦,它不能是一个弹出窗口。我需要在启用触摸的画布层之上的progressBar ..

2 个答案:

答案 0 :(得分:22)

在构造函数中,执行以下操作:

ProgressBar pb = new ProgressBar(this, null, android.R.attr.progressBarStyleHorizontal);

您可以使用AttributeSet替换null,通常您无论如何都需要Android的AttributSets。 然后,您可以使用标准的View方法设置其宽度/位置。

答案 1 :(得分:1)

您可以使用LevelListDrawable,如下所示:

LevelListDrawable mLevels;
mLevels = (LevelListDrawable)getContext().getResources().getDrawable( R.drawable.stat_levels);

stat_levels 是drawables中的xml文件,包含以下内容;

<?xml version="1.0" encoding="utf-8"?>
<level-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:maxLevel="0" android:drawable="@drawable/stat_0" />
<item android:maxLevel="10" android:drawable="@drawable/stat_10" />
<item android:maxLevel="20" android:drawable="@:drawable/stat_20" />
<item android:maxLevel="40" android:drawable="@drawable/stat_40" />
<item android:maxLevel="60" android:drawable="@drawable/stat_60" />
<item android:maxLevel="80" android:drawable="@drawable/stat_80" />
<item android:maxLevel="100" android:drawable="@:drawable/stat_100" />
</level-list>

stat_0 - stat_100是不同级别的drawable。

这可用于根据您的需求设置级别:mLevels.setLevel(mLevel);

mLevel可以是maxLevel,即0,10,20,40,60,80,100。