2012-06-01 33 views
0

我需要創建4個等寬連續的按鈕。我知道如何使用線性佈局和權重來做到這一點,但這對我來說並不完全可以接受。我還有一些與我的4個按鈕有關的其他視圖,所以我想在相對佈局中做所有事情。可能嗎?Android:在同一行中創建4個等寬的按鈕(相對佈局)

+2

將你的按鈕放入'LinearLayout'中,並將'LinearLayout'放入'RelativeLayout'中。或者你的意思是你的觀點必須與特定的'Button'相關? – Squonk

+0

@MisterSquonk是的,視圖是相對於一個特定的按鈕。實際上,我可以在RelativeLayout中放置一個LinearLayout,然後用它自己的RelativeLayout包裝每個Button,但這很奇怪,聽起來像是「layoutCeption」:) –

+2

也許你應該添加更多關於整個佈局的細節。然後我們可以提供更完整的建議。試圖讓沒有LinearLayout的按鈕具有相同的長度會造成麻煩。 – you786

回答

1

將按鈕寬度設置爲標準大小如何?

<Button 
    android:width="75dp" 
    ... /> 

加成

要在運行時發現顯示器的寬度:

int width = getWindowManager().getDefaultDisplay().getWidth()/4; 
// Set this width to your buttons 
+2

問題是,總屏幕寬度是特定於每個Android設備 –

0

選擇會告訴其他人具有相同的寬度和高度的觀點之一。爲了獲取一個視圖的大小,使用這樣的:

private static void runJustBeforeBeingDrawn(final View view, final Runnable runnable) 
{ 
    final ViewTreeObserver vto = view.getViewTreeObserver(); 
    final OnPreDrawListener preDrawListener = new OnPreDrawListener() 
    { 
     @Override 
     public boolean onPreDraw() 
     { 
      Log.d(App.APPLICATION_TAG, CLASS_TAG + "onpredraw"); 
      runnable.run(); 
      final ViewTreeObserver vto = view.getViewTreeObserver(); 
      vto.removeOnPreDrawListener(this); 
      return true; 
     } 
    }; 
    vto.addOnPreDrawListener(preDrawListener); 
} 
0

我不知道肯定,但我認爲,只有這樣,你可以做到這一點,沒有重量標籤,是運行時/以編程方式設置它。

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <integer name="numberOfButtons">4</integer> 
</resources> 

而且,在適配器/ Activity類,類似如下::我通過在integer.xml設定恆定,像下面這樣做

DisplayMetrics dm = new DisplayMetrics(); 
// dm holds your structure of resolution 
context.getWindowManager().getDefaultDisplay().getMetrics(dm); 

int width = dm.getWidth(); 
btn1.setWidth(width/getInteger(R.integer.numberOfButtons)); 
btn2.seTwidth(width/getInteger(R.integer.numberOfButtons)); 
btn3.seTwidth(width/getInteger(R.integer.numberOfButtons)); 
btn4.seTwidth(width/getInteger(R.integer.numberOfButtons)); 

希望這能以某種方式幫助你。

+0

正如尤里先前所述,每個安卓設備都有其自己的分辨率/屏幕大小。該值可以通過「DisplayMetrics」類獲得。 – mthama

相關問題