web-dev-qa-db-ja.com

画面サイズに関係なく2つのボタンを同じ幅に設定しますか?

わかりました、私は線形レイアウトの2つのボタンがあります:

<LinearLayout Android:id="@+id/linearLayout1" 
              Android:layout_height="wrap_content" 
              Android:layout_width="fill_parent">
        <Button Android:id="@+id/aktiviraj_paket" 
                Android:text="Aktiviraj" 
                Android:layout_height="40sp" 
                Android:layout_width="160sp" 
                Android:background="@drawable/my_border3" 
                Android:onClick="myClickHandle"></Button>
        <Button Android:id="@+id/deaktiviraj_paket" 
                Android:text="Deaktiviraj" 
                Android:layout_height="40sp" 
                Android:layout_width="fill_parent" 
                Android:background="@drawable/my_border3"
                Android:onClick="myClickHandle">
        </Button>
</LinearLayout>

つまり、両方のボタンでfill parentを使用すると、それらは互いに1つになるため、最初のボタンを160sp幅にし、2番目のボタンをfill_parentにします。これが4インチ以下の画面で表示される場合、ボタンは同じサイズですが、タブレット(10インチ)でこれを試してみると、最初のボタンは160sp幅のままで、2番目は画面の終わりまで引き伸ばされます(fill_parentのため)。これを作成して、画面のサイズに関係なく両方のボタンを同じサイズにすることはできますか?

41
Goran

両方のButtonsでAndroid:layout_weight="1"を使用します。両方にAndroid:layout_width="0dp"を設定します。両方のボタンの重みが等しくなったため、親の幅がそれぞれ半分になりました。

詳細はこちらをご覧ください: http://developer.Android.com/guide/topics/ui/layout/linear.html

96
Che Jami

すべてのボタンを最も幅の広いボタンの幅にすることを目的としている場合、ウェイトを設定してもそれはできません。むしろ、すべてのボタンをTableLayoutに配置できます。

   <TableLayout 
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content" >

        <TableRow
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content" >

            <Button
                Android:id="@+id/button1"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:text="@string/short_text" />
        </TableRow>

        <TableRow
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content" >

            <Button
                Android:id="@+id/button2"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:text="@string/enter_manually" />
        </TableRow>
    </TableLayout>

このレイアウトには、同じ幅の2つのボタンが表示されます。

19
user3838403

各ボタンに設定:

Android:layout_weight="0.5"
Android:layout_width="0dp"
3
Bogdan M.
<LinearLayout
    Android:id="@+id/layout"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:orientation="horizontal" >

    <Button
        Android:id="@+id/button1"
        Android:layout_width="match_parent"
        Android:layout_height="40dp"
        Android:layout_weight="1"
        Android:text="One" />

    <Button
        Android:id="@+id/button2"
        Android:layout_width="match_parent"
        Android:layout_height="40dp"
        Android:layout_weight="1"
        Android:text="Two" />
</LinearLayout>

これらは、上記のコードから並べて実行できる等サイズボタンの例です

Android:layout_weight 

linearLayoutのすべての子にボタンまたは同等の量のスペースを割り当てるために使用されます。

注:線形レイアウトでのみ機能します。

3
Prits Ramani
Display display=getWindowManager().getDefaultDisplay();
    int width=display.getWidth();
    btn1.setWidth(width/2);
    btn2.seTwidth(width/2);

Xmlファイルに何かを設定してから、最初にデバイスの幅を見つけてから、両方のボタンに半分の幅を設定します

3
Tofeeq Ahmad
Android:layout_weight="0.5"
Android:layout_width="0dp

それは働いています

1
Baris C

これは機能しています:

<LinearLayout
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:orientation="horizontal">
    <Button
        Android:layout_width="0dp"
        Android:layout_weight="0.5"
        Android:layout_height="wrap_content"
        Android:text="my btn 1"/>
    <Button
        Android:layout_width="0dp"
        Android:layout_weight="0.5"
        Android:layout_height="wrap_content"
        Android:text="my btn 2"/>
    </LinearLayout>
0
ata rezapouri

このように相対レイアウトにネストされた線形レイアウトでそれらを設定できます

<LinearLayout
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:layout_alignParentBottom="true"
    Android:layout_centerHorizontal="true"
    Android:gravity="center"
    Android:orientation="vertical">



        <Button
            Android:id="@+id/bestBtn"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:textStyle="bold"
            Android:layout_marginBottom="5dp"
            Android:textAllCaps="false"
            Android:textSize="16sp"
            Android:textColor="@color/grey_light2"
            Android:background="@drawable/sharefb_btn"
            Android:text="@string/sharefb" />
        <Button
            Android:id="@+id/playBtn"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:textColor="@color/grey_light2"
            Android:textAllCaps="false"
            Android:textSize="16sp"
            Android:layout_marginBottom="50dp"
            Android:textStyle="bold"
            Android:background="@drawable/puzzle_opening_btn_ncvtelen_3"
            Android:text="@string/playagain" />

</LinearLayout>

そして、あなたはそのような何かを得るでしょう

enter image description here

0

含まれるレイアウトでAndroid:layout_weight = "1"を設定する線形レイアウトでは、Android:orientationを水平に設定する必要があります。そして、内側のボタンには次のものが必要です。

Android:layout_width = "0dp"

Android:layout_weight = "0.5"

0