Установите две кнопки одинаковой ширины независимо от размера экрана?
Хорошо, у меня есть две кнопки в линейной компоновке:
<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 на обеих кнопках, они одно друг на друге, поэтому я сделал первую кнопку ширины 160sp, а второй - fill_parent. Если это показано на 4-дюймовом экране или меньше, кнопки имеют одинаковый размер, но если я попробую это на планшете (10 дюймов), первая кнопка останется шириной 160 с, а вторая растянется до конца экрана (потому что fill_parent). Могу ли я сделать это, так что обе кнопки могут быть даже размером, независимо от размера экрана?
Ответы
Ответ 1
Используйте android:layout_weight="1"
для обоих Button
s. Установите android:layout_width="0dp"
на обоих. Поскольку обе кнопки теперь имеют одинаковое взвешивание, теперь каждая из них будет иметь половину ширины родителя.
Вы можете узнать больше здесь: http://developer.android.com/guide/topics/ui/layout/linear.html
Ответ 2
Если вы хотите сделать все кнопки шириной самой широкой кнопки, установка весов не будет делать этого. Скорее всего, вы можете поместить все кнопки в 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>
В этом макете будут показаны две кнопки, одна поверх другой, та же ширина.
Ответ 3
для каждой кнопки:
android:layout_weight="0.5"
android:layout_width="0dp"
Ответ 4
Display display=getWindowManager().getDefaultDisplay();
int width=display.getWidth();
btn1.setWidth(width/2);
btn2.seTwidth(width/2);
Установите что-нибудь в xml файле, затем сначала найдите ширину устройства, затем установите ширину половины на обе кнопки Теперь на каждом устройстве они будут выглядеть точно такими же
Ответ 5
<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.
Примечание. Он работает только с линейной компоновкой.
Ответ 6
android:layout_weight="0.5"
android:layout_width="0dp
работает
Ответ 7
Установите android: layout_weight = "1" в содержащем макете. Линейный макет должен иметь android: ориентация установлена как горизонтальная. А затем внутренние кнопки должны иметь следующее:
Android: layout_width = "0dp"
Android: layout_weight = "0.5"
Ответ 8
Это работает:
<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>
Ответ 9
Вы можете установить их в линейном макете, вложенном в относительный макет, как это
<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]()