2011-01-24 48 views
9

如何創建沒有XML的橫向progessBar或者如何聲明沒有XML contentView的XML屬性?Android - 以編程方式創建視圖progressBar

我有.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); 

哦,它不能是一個彈出窗口。我需要的進度在啓用觸摸的帆布層的頂部..

+0

任何運氣得到這個工作? – hopia 2012-03-26 19:02:33

+0

@hopia是的,但我很難記住它..做了這樣的事情:RelativeLayout rl = new RelativeLayout(this); \t \t setContentView(rl); \t \t panel = new Panel(this,content,W,H); \t \t panel.requestFocus(); \t \t rl.addView(panel); \t \t pb = new ProgressBar(this,null,android.R.attr.progressBarStyleHorizo​​ntal); \t \t pb.setLayoutParams(new LayoutParams(sWidth,10)); \t \t rl.addView(pb); \t \t setContentView(rl); – yosh 2012-03-27 09:59:01

回答

22

在構造函數中,這樣做:

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

您可以用的AttributeSet更換空,一般就需要Android的AttributSets之一呢。 然後,您可以使用標準的View方法設置其寬度/位置。

1

您可以使用LevelListDrawable這個如下:

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

stat_levels是包含以下東西可繪製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);

M級可以maxLevel即0,10,20,40,60,80,100