2012-08-30 34 views
0

我有一個佈局,我在其中動態地添加行。每行由一個TextView和一個EditText組成。現在EditText的文本是在運行時設置的,所以我希望它們都像整個文本字段位於左側,edittext位於右側那樣整齊排列。調整LinearLayout子集的寬度

這是我的代碼

for (int i = 0; i < itemsContainer.getChildCount(); i++) 
    { 
     View v=itemsContainer.getChildAt(i); 
     if(v instanceof ClickableButtonView) 
     { 
      TextView textView=((ClickableButtonView)v).getItem(); 
      if(textView.getWidth() > width) 
      { 
       width=textView.getWidth(); 
      } 
     } 

    } 

    for (int i = 0; i < itemsContainer.getChildCount(); i++) 
    { 
     View v=itemsContainer.getChildAt(i); 
     if(v instanceof ClickableButtonView) 
     { 
      TextView textView=((ClickableButtonView)v).getItem(); 
      textView.setLayoutParams(new LayoutParams(width, LayoutParams.WRAP_CONTENT)); 
     } 

    } 

現在發生的事情是我的佈局,與TextView的崩潰,只有右側的元素佔據了整個空間。我想遍歷LineraLyout,找到佔用空間最大的edittext,並將所有edittext設置爲佔用完全相同的空間。這可以做到嗎?

回答

1

在循環中調用此方法來爲您的文本視圖設置任何所需權重的樣式。給所有人分量1將使其相等。

private void setStyle(TextView textView, float weight) { 
    textView.setSingleLine(false); 
    textView.setWidth(0); 
    textView.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, 
      LayoutParams.WRAP_CONTENT, weight)); 
    textView.setPadding(8, 0, 8, 0); 
    textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL); 
} 
+0

我會試試這個 – AndroidDev

+0

我試過這個。它確實使所有EditText的寬度相等,但它正在對文本進行排列。我怎樣才能改變它使每個TextView等於最寬的文本視圖? – AndroidDev

+0

不能測量最寬的textview,但是你可以調整填充,如果你不想讓你的文本換行但是要剪切,那麼刪除單行設置或將其設置爲true。 – Mal