2011-10-04 59 views
0

我的用戶界面包含兩個元素:頂部的按鈕和按鈕下的文本視圖。按鈕的寬度設置爲「wrap_content」,所以當我在運行時將不同的文本設置爲按鈕時,它的寬度將會改變。我希望始終讓textview與按鈕對齊(具有相同的寬度),特別是首次加載UI。如何使文本視圖與上面的小部件對齊?

我試圖讓該按鈕的寬度onGlobalLayout事件,並設置TextView的寬度,但似乎不起作用。誰能幫我?

UPDATE:

我想我可能有超過簡化我的問題。真正的用戶界面有很多小部件(我的問題中的按鈕和textview)由代碼生成。所以我不能用XML來定義它們。並且由於UI未完全加載,所以我無法使用getWidth()獲取對齊文本視圖時按鈕的實際寬度。

回答

1

在XML中使用此佈局,使用RelativeLayout作爲Button和TextView的容器。

那麼對於TextView的你會指定對齊:

android:layout_alignLeft="@+id/button1" 
android:layout_alignRight="@+id/button1" 

因此它的左側和右側都對準你的按鈕。

注意:您可以使用RelativeLayout.LayoutParams從java代碼也做同樣的事情,但它比使用XML更復雜。

0

在情況下,你不喜歡代碼的工作,這是關於按鍵與具有相同的寬度TextView的一個樣本:

public class MainActivity extends Activity { 
    Button mButton; 
    TextView mText; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main);   

     mButton = (Button)findViewById(R.id.button); 
     mText = (TextView)findViewById(R.id.text); 

     updateUI(); 
    } 

    public void updateUI() { 
     int wButton = mButton.getWidth(); 
     int wText = mText.getWidth(); 

     if(wButton < wText) { 
      mButton.setWidth(wText); 
     } else { 
      mText.setWidth(wButton); 
     } 
    } 
} 

好,其缺點是需要調用updateUI()每次你更新文本任一控制。

+0

感謝您的代碼@xjaphx。但是我真正的UI有很多由代碼生成的小部件。我無法使用自己的方式來獲取小部件的寬度,因爲當我嘗試對齊這些小部件時UI並未完全加載。 – eric2323223