2013-01-19 100 views
0

我一直在嘗試創建一個自定義視圖,用於指示專有設備的電池電量。自定義視圖不能正確顯示嵌套的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 - 但是沒有什麼改變,視圖本身似乎空。

回答

0

我認爲這是因爲您使用的LayoutParams發生(getHeight()在那一刻返回0)。看看這個有差別:

this.setOrientation(LinearLayout.HORIZONTAL); 
    for (int i = 0; i < 10; i++) { 
     ImageView loadingPiece = new ImageView(context); 
     loadingPiece.setBackgroundColor(Color.BLACK); 
     LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(0, 
      LinearLayout.LayoutParams.FILL_PARENT, 1.0f); 
     this.addView(loadingPiece, lp); 
     views.add(loadingPiece);   
    } 
+1

你幾乎是對的。在你的建議中,你並沒有將ImageView添加到後來在setPercentage方法中使用的Arraylist視圖中。 Addind views.Add(loadingPiece)給你的建議解決了我的大部分問題:) – CodePrimate

+0

@litemode你是對的,我忘了也將'ImageView'添加到列表中。 – Luksprog

0

我認爲這將是更容易使用一個簡單的觀點與背景自定義繪製和渲染的背景不同,這取決於百分比。或者爲什麼不使用ProgressBar?