2013-10-13 56 views
0

我有一個視圖,其中包含兩個ButtonTextView。它們是層時,使用RelativeLayout如下所示:如何確保Android按鈕在不同佈局時具有相同高度

    +-----------+ 
__TextView___  | Button 1 | 
        +-----------+ 
+-----------+ 
| Button 2 | 
+-----------+ 

這裏的關鍵是,TextView的和按鈕1具有相同的高度,通過layout_alignToplayout_alignBottom上按鈕1

按鈕2被約束爲具有執行與TextView的寬度相同(使用layout_alignLeftlayout_alignRight)。

的問題是,我也希望它有使用類似相同的高度,按鍵1:

layout_height="@id/button_1" 

我可以完全通過使用佈局來實現這一目標?

如果沒有,是否有一些代碼可以在Activity中使用該視圖來強制執行此佈局但在顯示之前?

我真的很想避免創建一個特殊的View來實現這一點。

在iOS的土地,我可以具體說明,各種控件具有相同的高度或寬度,但我不能在Android中看到一種方式來做到這一點。

+0

如果你使用Android:layout_height =「WRAP_CONTENT」和android:TEXTSIZE = 10SP,或兩者兼有我想你可以有相同的高度的按鈕相同的字體大小你的按鈕 –

+0

@MaulikSheth這是真的,但我想避免明確設置大小,我希望大小與輸入相關。EditText –

+0

使用與設備無關的像素(驟降)進行測量。系統將確保不同設備和密度下的尺寸相同。 – Kuffs

回答

0

嘗試把這個在您的活動onCreate方法

Button button1 = (Button) findViewById(R.id.button_1); 
Button button2 = (Button) findViewById(R.id.button_2); 
RelativeLayout relativeLayout = (RelativeLayout) findViewById(R.id.relativeLayout); 
relativeLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { 

    @Override 
    public void onGlobalLayout() { 
     relativeLayout.getViewTreeObserver().removeGlobalOnLayoutListener(this); 

     RelativeLayout.LayoutParams btParams = (RelativeLayout.LayoutParams) button2.getLayoutParams(); 
     int height = button1.getHeight(); 
     btParams.height = height; 
     button2.setLayoutParams(btParams); 
    } 
}); 
+0

而你的編輯只是打敗了我的評論:) –

相關問題