2015-03-08 84 views
0

我有一個3到3個計算器(如配置)中標記爲1到9的9個按鈕。這些都包含在相對視圖中。我希望按鈕的寬度比需要的寬度更寬,並填充相對視圖的可用寬度。相對視圖設置爲填充父項。我還想在按鈕之間至少留下一個小間隙,以免它們碰觸到。解決這個問題的最好方法是什麼?在相對視圖中的Android按鈕 - 有按鈕填充可用寬度

<Button 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" 
 
     android:text="@string/btn0" 
 
     android:id="@+id/btn0" 
 
     android:layout_above="@+id/btnStart" 
 
     android:layout_alignParentLeft="true" 
 
     android:layout_alignParentStart="true" 
 
     android:onClick="btnNumber_Click" 
 
     android:tag="0" /> 
 

 
    <Button 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" 
 
     android:text="@string/btn1" 
 
     android:id="@+id/btn1" 
 
     android:layout_above="@+id/btn0" 
 
     android:layout_alignParentLeft="true" 
 
     android:layout_alignParentStart="true" 
 
     android:tag="1" 
 
     android:onClick="btnNumber_Click" /> 
 

 
    <Button 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" 
 
     android:text="@string/btn2" 
 
     android:id="@+id/btn2" 
 
     android:tag="2" 
 
     android:onClick="btnNumber_Click" 
 
     android:layout_above="@+id/btnNegative" 
 
     android:layout_alignLeft="@+id/btnNegative" 
 
     android:layout_alignStart="@+id/btnNegative" /> 
 

 
    <Button 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" 
 
     android:text="@string/btn3" 
 
     android:id="@+id/btn3" 
 
     android:layout_above="@+id/btn0" 
 
     android:layout_alignParentRight="true" 
 
     android:layout_alignParentEnd="true" 
 
     android:tag="3" 
 
     android:onClick="btnNumber_Click" /> 
 

 
    <Button 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" 
 
     android:text="@string/btn4" 
 
     android:id="@+id/btn4" 
 
     android:layout_above="@+id/btn1" 
 
     android:layout_alignParentLeft="true" 
 
     android:layout_alignParentStart="true" 
 
     android:tag="4" 
 
     android:onClick="btnNumber_Click" /> 
 

 
    <Button 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" 
 
     android:text="@string/btn5" 
 
     android:id="@+id/btn5" 
 
     android:tag="5" 
 
     android:onClick="btnNumber_Click" 
 
     android:layout_below="@+id/btn8" 
 
     android:layout_alignLeft="@+id/btn2" 
 
     android:layout_alignStart="@+id/btn2" /> 
 

 
    <Button 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" 
 
     android:text="@string/btn6" 
 
     android:id="@+id/btn6" 
 
     android:layout_alignBottom="@+id/btn5" 
 
     android:layout_alignLeft="@+id/btn3" 
 
     android:layout_alignStart="@+id/btn3" 
 
     android:tag="6" 
 
     android:onClick="btnNumber_Click" /> 
 

 
    <Button 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" 
 
     android:text="@string/btn7" 
 
     android:id="@+id/btn7" 
 
     android:layout_above="@+id/btn4" 
 
     android:layout_alignParentLeft="true" 
 
     android:layout_alignParentStart="true" 
 
     android:tag="7" 
 
     android:onClick="btnNumber_Click" /> 
 

 
    <Button 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" 
 
     android:text="@string/btn8" 
 
     android:id="@+id/btn8" 
 
     android:tag="8" 
 
     android:onClick="btnNumber_Click" 
 
     android:layout_alignTop="@+id/btn7" 
 
     android:layout_alignLeft="@+id/btn5" 
 
     android:layout_alignStart="@+id/btn5" /> 
 

 
    <Button 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" 
 
     android:text="@string/btn9" 
 
     android:id="@+id/btn9" 
 
     android:layout_alignTop="@+id/btn8" 
 
     android:layout_alignLeft="@+id/btn6" 
 
     android:layout_alignStart="@+id/btn6" 
 
     android:tag="9" 
 
     android:onClick="btnNumber_Click" /> 
 

 
    <Button 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" 
 
     android:text="@string/btnEnter" 
 
     android:id="@+id/btnEnter" 
 
     android:layout_alignTop="@+id/btn0" 
 
     android:layout_alignRight="@+id/btn3" 
 
     android:layout_alignEnd="@+id/btn3" 
 
     android:onClick="btnEnter_Click" 
 
     android:layout_alignLeft="@+id/btn3" 
 
     android:layout_alignStart="@+id/btn3" 
 
     android:singleLine="false" />

感謝,

大衛

+1

如果您希望它們填滿屏幕並在寬度上平均增長,最好的答案是每行都有一個LinearLayout,因此您可以給它們相同的權重。相對佈局沒有匹配的概念。 – 2015-03-08 20:12:34

+0

謝謝Gabe。所以我只需在相對佈局中爲每一行按鈕放置1個線性佈局?那麼因爲我有3列,我會爲每列分配33%的權重? – 2015-03-08 20:16:13

+1

是的。技巧的另一部分是你需要給這些按鈕一個0dp的layout_width,並加上一個重量。這告訴系統根據權重確定它們的大小,填充父級中的所有可用空間。該行的線性佈局應設置爲match_parent寬度。 – 2015-03-08 20:18:44

回答

0

這是你如何佈局應是

,也可以設置margin所有按鈕之間有一定的空間。

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<LinearLayout 
    android:layout_weight="1" 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:orientation="horizontal"> 

    <Button 
     android:layout_weight="1" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" /> 
    <Button 
     android:layout_weight="1" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" /> 
    <Button 
     android:layout_weight="1" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" /> 

</LinearLayout> 
<LinearLayout 
    android:layout_weight="1" 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:orientation="horizontal"> 

    <Button 
     android:layout_weight="1" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" /> 
    <Button 
     android:layout_weight="1" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" /> 
    <Button 
     android:layout_weight="1" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" /> 

</LinearLayout> 
<LinearLayout 
    android:layout_weight="1" 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:orientation="horizontal"> 

    <Button 
     android:layout_weight="1" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" /> 
    <Button 
     android:layout_weight="1" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" /> 
    <Button 
     android:layout_weight="1" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" /> 

</LinearLayout> 
</LinearLayout> 
+0

感謝Apuvra,這基本上是我實現的。 – 2015-03-09 01:33:17