安卓 - 编程创建视图进度条

9

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

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

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);

噢,而且它不能是弹出窗口。我需要一个进度条放在触摸可用的画布层顶部。


你有没有运气让它工作? - hopia
@hopia 是的,但我几乎记不得了.. 大概是这样做的:RelativeLayout rl = new RelativeLayout(this); setContentView(rl); panel = new Panel(this, content, W, H); panel.requestFocus(); rl.addView(panel); pb = new ProgressBar(this, null, android.R.attr.progressBarStyleHorizontal); pb.setLayoutParams(new LayoutParams(sWidth, 10)); rl.addView(pb); setContentView(rl); - yosh
2个回答

22

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

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

你可以用一个AttributeSet替换null,一般来说你需要一个Android的AttributSets。然后你可以使用标准的View方法来设置它的宽度/位置。


2
你能告诉我如何添加这些属性吗?这段代码很好,给了我水平滚动条,但是当我想要在构造函数中将style.xml中的特定样式作为xml属性集添加时,我一直收到关键错误(我现在没有工作,无法确定是什么)。 - yosh

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 是不同级别的可绘制对象。

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

mLevel 可以是最大级别,即 0、10、20、40、60、80、100。


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