6

我知道这可以通过使用相对布局很容易地完成,但我觉得我所做的是正确的,并且应该使用线性布局本身给我想要的结果。但由于某种原因,当我在运行 Android JB 4.1.2 的 Google Nexus 7 上运行此工具时,我会在列表视图项之后立即看到按钮和文本视图。如果列表视图为空,我会在屏幕顶部看到它们。难道我做错了什么??这是我的xml文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/attachments_list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:weightSum="1"
android:orientation="vertical">
<ListView
    android:id="@+id/mtg_attachments"
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="1" />
<Button
    android:id="@+id/attach_delete"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:text="@string/delete"
    android:textSize="22sp" />
<TextView
    android:text="@string/attach_warning"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="18sp" />
</LinearLayout>
4

5 回答 5

2
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/attachments_list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:weightSum="1" >
<ListView
    android:id="@+id/mtg_attachments"
    android:layout_width="fill_parent"
    android:layout_height="70dp"
    android:layout_weight="0.9" />
<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom"
    android:layout_weight="0.1"
    android:gravity="bottom" >
    <Button
        android:id="@+id/attach_delete"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="delete"
        android:textSize="22sp" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="attach_warning"
        android:textSize="18sp" />
</LinearLayout>
</LinearLayout>
于 2012-10-16T04:32:33.550 回答
1

Sriman 请看一下这个答案,然后告诉我这是否有用。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/attachments_list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="bottom"
android:orientation="vertical"
android:weightSum="1" >

<ListView
    android:id="@+id/mtg_attachments"
    android:layout_width="fill_parent"
    android:layout_height="0dip"
    android:layout_weight="1" />

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >

    <Button
        android:id="@+id/attach_delete"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="delete"
        android:textSize="22sp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="attach_warning"
        android:textSize="18sp" />
</LinearLayout>

</LinearLayout>
于 2012-10-16T11:16:45.910 回答
1

我知道这个问题已经有了一个公认的答案,但我还是要回复,因为没有找到解决方案,这是谷歌给我的关于我也遇到的这个问题的第一个结果。

只需在要划分的 2 个元素之间放置一个LinearLayout (vertical)with即可。layout:weight = 1

在您的代码中,那将是

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:id="@+id/attachments_list"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:weightSum="1"
              android:orientation="vertical">
    <ListView
        android:id="@+id/mtg_attachments"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="0" />

    <LinearLayout
        <!-- You should add this one and remove android:layout_weigth="1" form the listview -->
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1">
    </LinearLayout>

    <Button
        android:id="@+id/attach_delete"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="@string/delete"
        android:textSize="22sp" />
    <TextView
        android:text="@string/attach_warning"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="18sp" />

</LinearLayout>

注意,添加的LinearLayout必须是唯一设置了权重属性的,否则我们不得不面对一些问题。

于 2013-10-17T13:52:37.950 回答
0

如果您想将一个项目置于屏幕中间,请不要使用 LinearLayout,因为它们用于显示一个接一个堆叠的行中的多个项目。

请改用相对布局。

所以替换:

android:layout_gravity="center"

对于相关RelativeLayout选项:

android:layout_centerInParent="true"
于 2012-10-16T04:02:05.250 回答
0

修改您的 xml 代码。

使用android:layout_weight来调整布局的百分比。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/attachments_list"
    android:layout_width="fill_parent"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:weightSum="1"
    android:orientation="vertical">
<ListView
    android:id="@+id/mtg_attachments"
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="0.8" />
<Button
    android:id="@+id/attach_delete"
    android:layout_width="wrap_content"
    android:layout_height="0dp"
    android:layout_gravity="center"
    android:layout_weight="0.1"
    android:text="@string/delete"
    android:textSize="22sp" />
<TextView
    android:text="@string/attach_warning"
    android:layout_width="wrap_content"
    android:layout_height="0dp"
    android:layout_weight="0.1"
    android:textSize="18sp" />
</LinearLayout>
于 2012-10-16T05:55:15.773 回答