Android - программно создающий представление progressBar - PullRequest
9 голосов
/ 24 января 2011

Как создать горизонтальный progessBar без XML или как объявить свойства XML без XML contentView?

У меня есть макет в файле .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);

О, и это не может быть всплывающее окно.Мне нужен прогрессбар поверх слоя холста с сенсорным экраном.

Ответы [ 2 ]

22 голосов
/ 24 января 2011

В конструкторе сделайте это:

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

Вы можете заменить ноль на AttributeSet, как правило, в любом случае вам понадобится один из Android AttributSet. Затем вы можете установить его ширину / местоположение, используя стандартные методы просмотра.

1 голос
/ 25 января 2011

Вы можете использовать LevelListDrawable для этого следующим образом:

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

stat_levels - это xml-файл в drawables содержит следующее:

<?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 areDrawables разных уровней.

это можно использовать для установки уровня на основе ваших потребностей: mLevels.setLevel(mLevel);

mLevel может быть maxLevel, то есть 0, 10, 20, 40, 60, 80, 100.

...