Установка размера кнопок в процентах

Пожалуйста, ознакомьтесь со следующим кодом

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".HomeScreen" > <TableLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:stretchColumns="*" android:layout_alignParentTop="true" > <TableRow android:id="@+id/tableRow1" 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="Button" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" /> <Button android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" /> </TableRow> <TableRow android:id="@+id/tableRow2" android:layout_width="wrap_content" android:layout_height="wrap_content" > <Button android:id="@+id/button4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" /> <Button android:id="@+id/button5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" /> <Button android:id="@+id/button6" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" /> </TableRow> <TableRow android:id="@+id/tableRow3" android:layout_width="wrap_content" android:layout_height="wrap_content" > <Button android:id="@+id/button7" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" /> <Button android:id="@+id/button8" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" /> <Button android:id="@+id/button9" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" /> </TableRow> <TableRow android:id="@+id/tableRow4" android:layout_width="wrap_content" android:layout_height="wrap_content" > <Button android:id="@+id/button10" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" /> <Button android:id="@+id/button11" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" /> <Button android:id="@+id/button12" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" /> </TableRow> </TableLayout> </RelativeLayout> 

Это генерирует следующий вывод.

Введите описание изображения здесь

Но это не то, что мне нужно. Мне нужны эти 12 кнопок, чтобы заполнить весь экран, поддерживать равные промежутки между собой и быть одинаковыми по размеру. Мне не нужно устанавливать фиксированный размер lie hight = 100, width = 100, вместо этого он должен отрегулировать размер в соответствии с размером экрана устройства. Это означает, что каждая кнопка может иметь 8,3% пространства на экране (100/12 = 8.3).

Я попробовал это, установив высоту каждой кнопки на 0dp и добавив android:layout_weight = 0.083 . Но это не сработало, потому что после этого не было отображено никаких кнопок.

Как я могу это сделать? Пожалуйста помоги.

Попробуйте следующую компоновку. Я изменил некоторые значения веса и сделал высоту кнопки, как fill_parent

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".HomeScreen" > <TableLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:stretchColumns="*" android:weightSum="4" > <TableRow android:id="@+id/tableRow1" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="1" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="fill_parent" android:text="Button" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="fill_parent" android:text="Button" /> <Button android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="fill_parent" android:text="Button" /> </TableRow> <TableRow android:id="@+id/tableRow2" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="1" > <Button android:id="@+id/button4" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight=".3" android:text="Button" /> <Button android:id="@+id/button5" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight=".3" android:text="Button" /> <Button android:id="@+id/button6" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight=".3" android:text="Button" /> </TableRow> <TableRow android:id="@+id/tableRow3" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="1" > <Button android:id="@+id/button7" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight=".3" android:text="Button" /> <Button android:id="@+id/button8" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight=".3" android:text="Button" /> <Button android:id="@+id/button9" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight=".3" android:text="Button" /> </TableRow> <TableRow android:id="@+id/tableRow4" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="1" > <Button android:id="@+id/button10" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight=".3" android:text="Button" /> <Button android:id="@+id/button11" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight=".3" android:text="Button" /> <Button android:id="@+id/button12" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight=".3" android:text="Button" /> </TableRow> </TableLayout> </RelativeLayout> 

Это работает на моем устройстве. Упование это работает и для вас!

Введите описание изображения здесь

У вас нет динамического макета, который вы хотите внутри xml.

В вашей деятельности / фрагменте, где вы загружаете макет .. вам нужно установить высоту tableRow самостоятельно в зависимости от размера экрана

Чтобы получить экраны, вы можете использовать

  DisplayMetrics metrics = new DisplayMetrics(); Activity aActivity = (Activity) container.getContext(); aActivity.getWindowManager().getDefaultDisplay().getMetrics(metrics); screen_Width = metrics.widthPixels; screen_Height = metrics.heightPixels; 

Теперь вы можете установить ширину каждой строки таблицы как totalHeight/NoOFRows - padding.

  tableRow.setMinimumHeight(calculatedHeight); 

Аналогичный расчет может быть выполнен с учетом ширины, чтобы заставить их правильно заполнять и поддерживать одинаковый размер