我一直在嘗試創建一個自定義視圖,用於指示專有設備的電池電量。自定義視圖不能正確顯示嵌套的ImageViews
所以,當設備的電池電平被讀取方法setPercentage(int batteryLevel)
上調用自定義視圖:
的問題是,不管是什麼值我設置似乎沒有任何自定義視圖改變。
這裏是類:
public class RectangleView extends LinearLayout {
private ArrayList<ImageView> views = new ArrayList<ImageView>();
public RectangleView(Context context, AttributeSet attributeSet) {
super(context, attributeSet);
init(context);
}
public RectangleView(Context context) {
super(context);
init(context);
}
private void init(Context context) {
this.setOrientation(LinearLayout.HORIZONTAL);
for (int i = 0; i < 10; i++) {
ImageView loadingPiece = new ImageView(context);
loadingPiece.setBackgroundColor(Color.BLACK);
this.addView(loadingPiece);
LayoutParams layoutParams = (LayoutParams)loadingPiece.getLayoutParams();
layoutParams.weight = 1.0f;
layoutParams.height = this.getHeight();
layoutParams.width = 0;
loadingPiece.setLayoutParams(layoutParams);
views.add(loadingPiece);
}
}
public void setPercentage(int amountToShow) {
for (int i = 0; i < views.size(); i++)
if (i < amountToShow)
views.get(i).setVisibility(View.VISIBLE);
else
views.get(i).setVisibility(View.INVISIBLE);
}
}
Caling setPersentage(5)應顯示5個imageviews - 但是沒有什麼改變,視圖本身似乎空。
你幾乎是對的。在你的建議中,你並沒有將ImageView添加到後來在setPercentage方法中使用的Arraylist視圖中。 Addind views.Add(loadingPiece)給你的建議解決了我的大部分問題:) – CodePrimate
@litemode你是對的,我忘了也將'ImageView'添加到列表中。 – Luksprog