Intereting Posts
Android: изменение размера пользовательских представлений. Родитель изменен, но изменения ширины / высоты не передаются в дочерний вид Изменить цвет индикатора выполнения в android Bitmap.compress (Bitmap.CompressFormat.PNG, 0, fOut), делая размер изображения больше оригинального Какой из них лучше: Мудрый: setOnClickListener VS android: onclick = "onClick" Какой продукт Flavor делает Android Studio по умолчанию в build.gradle? Как уменьшить использование памяти фоновых изображений? Как установить метки для оси X и Y в двухстрочной диаграмме с помощью aChartEngine в android? GetLoaderManager (). InitLoader () не принимает аргумент «this», хотя класс (ListFragment) реализует LoaderManager.LoaderCallbacks <Cursor> Как вставить в sqlite в android Слушайте входящие звонки через BroadcastReceiver, без PhoneStateIntentReceiver или PhoneStateListener Лучшая практика Android AsyncTask Отсоединение фрагмента, не запускающего onSaveInstanceState () Android + gmail + feed + получить ВСЕ письма Ошибка захвата 138 processDebugResources Альтернативные представления вместо Stackviews для версий для Android ниже для Android 3.0

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

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

<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); 

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