Android - 使用按钮填充布局

时间:2010-03-13 22:34:00

标签: java android android-linearlayout

只是一个关于如何实施此问题的快速问题。我希望屏幕底部有按钮,但如果屏幕尺寸较大,则会添加更多按钮。

例如,在较小的屏幕尺寸下,底部可能有4-5个按钮,但如果您在平板电脑或类似设备上运行它,则可能有20个按钮。

有什么建议吗?它也不能滚动,只需用按钮动态填充布局。

感谢。

3 个答案:

答案 0 :(得分:3)

要将按钮放在布局的底部,请在布局中执行以下操作:

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

答案 1 :(得分:0)

听起来您想要创建自己的自定义布局类。那或者只是填充一个LinearLayout(例如),直到你的屏幕空间用完为止。

答案 2 :(得分:0)

如果您知道按钮的大小(以像素为单位),您可以使用DisplayMetrics获取屏幕的尺寸,然后计算您的分配空间中适合的按钮数量。

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

metrics.heightPixels givs绝对高度(以像素为单位) 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);