Android - Заполнение макета Кнопками
-
19-09-2019 - |
Вопрос
Просто небольшой вопрос о том, как бы вы это реализовали.Я хочу, чтобы в нижней части экрана были кнопки, но если размер экрана будет больше, будет добавлено больше кнопок.
Например, при небольшом размере экрана внизу может быть 4-5 кнопок, но если вы запустите программу на планшете или чем-то подобном, там будет, возможно, 20 кнопок.
Есть какие-нибудь предложения?Он также не может прокручивать, ему просто нужно динамически заполнять макет кнопками.
Спасибо.
Решение
Чтобы разместить кнопки в нижней части макета, сделайте что-то подобное с вашим макетом:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main_layout">
<LinearLayout
android:layout_height="wrap_content"
android:id="@+id/button_layout"
android:layout_alignParentBottom="true"
android:layout_width="fill_parent"
android:gravity="center">
<Button
android:id="@+id/Button01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button 1"></Button>
<Button
android:id="@+id/Button02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button 2"></Button>
<Button
android:id="@+id/Button03"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button 3"></Button>
</LinearLayout>
<FrameLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_above="@+id/button_layout"
android:id="@+id/content">
<ListView
android:id="@+id/ListView01"
android:layout_height="fill_parent"
android:layout_width="fill_parent"></ListView>
</FrameLayout>
</RelativeLayout>
Чтобы изменить количество отображаемых кнопок в зависимости от размера экрана, вам следует реализовать отдельные макеты для нескольких размеров экрана..
http://developer.android.com/guide/practices/screens_support.html
Другие советы
Похоже, вы хотите создать свой собственный класс пользовательского макета.Это или просто заполните LinearLayout (например) до тех пор, пока у вас не закончится место на экране.
Если вы знаете размер ваших кнопок в пикселях, вы могли бы использовать DisplayMetrics, чтобы получить размеры экрана, а затем рассчитать, сколько кнопок поместится в отведенном вам пространстве.
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
показатели.heightPixels - абсолютная высота в пикселях показатели.ydpi - точные физические пиксели на дюйм экрана
и metrics.density дает логическую плотность для целей масштабирования
смотрите здесь: http://developer.android.com/reference/android/util/DisplayMetrics.html
затем просто сделайте что-то вроде
do{
Button button=new Button(context);
button.setText("yada yada")
button.allYoursettings....
.
.
LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
LinearLayout layout=(LinearLayout) findViewById(R.id.yourlayout);
layout.addView(button,p);
} while(havespaceleft);