带有列表视图和按钮的安卓布局

2022-08-31 10:17:27

好吧,这个特定的布局只是惹恼了我。而且似乎找不到一种方法来拥有listView,底部有一排按钮,以便listview不会延伸到按钮的顶部,因此按钮始终贴靠到屏幕底部。这是我想要的:

删除了死图像黑客链接

看起来它应该很容易,但我尝试过的一切都失败了。有什么帮助吗?

这是我当前的代码:

    RelativeLayout container = new RelativeLayout(this);
    container.setLayoutParams(new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));

    //** Add LinearLayout with button(s)

    LinearLayout buttons = new LinearLayout(this);

    RelativeLayout.LayoutParams bottomNavParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    bottomNavParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
    bottomNavParams.addRule(RelativeLayout.CENTER_HORIZONTAL);
    buttons.setLayoutParams(bottomNavParams);


    ImageButton newLayer = new ImageButton(this);
    newLayer.setImageResource(R.drawable.newlayer);
    newLayer.setLayoutParams(new LinearLayout.LayoutParams(45, LayoutParams.FILL_PARENT));
    buttons.addView(newLayer);

    container.addView(buttons);

    //** Add ListView

    layerview = new ListView(this);

    RelativeLayout.LayoutParams listParams = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
    listParams.addRule(RelativeLayout.ABOVE, buttons.getId());

    layerview.setLayoutParams(listParams);

    container.addView(layerview);

答案 1

我想这就是你要找的。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="fill_parent">

    <Button android:layout_width="fill_parent"
        android:layout_height="wrap_content" android:id="@+id/testbutton"
        android:text="@string/hello" android:layout_alignParentBottom="true" />

    <ListView android:layout_width="fill_parent"
        android:layout_height="fill_parent" android:id="@+id/list"
        android:layout_alignParentTop="true" android:layout_above="@id/testbutton" />

</RelativeLayout>

答案 2

我多年来一直有同样的问题。

将 ListView 保留在按钮上方,但防止它在列表很长时掩盖它们的解决方案是在 ListView 上设置 android:layout_weight=“1.0”。将按钮上的layout_weight保持未设置,以便它们保持其自然大小,否则按钮将被缩放。这适用于线性布局。

Android ApiDemos中有一个例子:ApiDemos/res/layout/linear_layout_9.xml