Android-программно создание представления progressBar

Как создать горизонтальный 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);

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

2 ответов


в конструкторе, сделайте следующее:

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

вы можете заменить null С, что attributeset, обычно все равно нужны AttributSets Андроида. Затем вы можете установить его ширину / местоположение с помощью стандартных методов просмотра.


вы можете использовать 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-это чертежи разных уровней.

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

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