Android - заполнить макет кнопками - PullRequest
1 голос
/ 14 марта 2010

Просто быстрый вопрос о том, как вы будете реализовывать это. Я хочу, чтобы в нижней части экрана были кнопки, но если размер экрана больше, будет добавлено больше кнопок.

Например, при небольшом размере экрана внизу может быть 4-5 кнопок, но если вы запускаете его на планшете или чем-то подобном, может быть 20 кнопок.

Есть предложения? Он также не может прокручиваться, он просто должен динамически заполнять макет кнопками.

Спасибо.

Ответы [ 3 ]

3 голосов
/ 14 марта 2010

Чтобы расположить кнопки в нижней части макета, сделайте что-то похожее на макет:

<?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

0 голосов
/ 15 мая 2010

Если вы знаете размер кнопок в пикселях, вы можете использовать DisplayMetrics, чтобы получить размеры экрана, а затем рассчитать, сколько кнопок поместится в выделенное пространство.

     DisplayMetrics metrics = new DisplayMetrics();
     getWindowManager().getDefaultDisplay().getMetrics(metrics);

metrics.heightPixels дает абсолютную высоту в пикселях metrics.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);
0 голосов
/ 14 марта 2010

Похоже, вы хотите создать свой собственный класс макета. Это или просто заполните LinearLayout (например), пока вы не исчерпаете пространство экрана.

...