Android线性布局填充宽度

10
我在想为什么会发生这种情况:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="fill_parent"
    android:gravity="center_vertical"
    android:layout_height="wrap_content" android:layout_gravity="top"
    android:background="@drawable/gradient" android:focusable="true"
    android:paddingTop="5dip" android:paddingBottom="5dip"
    android:focusableInTouchMode="true">
        <EditText android:id="@+id/searchField"
            android:layout_width="wrap_content" android:layout_height="fill_parent"

            android:paddingTop="2dip" android:paddingBottom="2dip"
            android:paddingLeft="10dip" android:paddingRight="10dip"
            android:inputType="textVisiblePassword" android:radius="5dip"
            android:layout_marginLeft="10dip"
            android:background="@drawable/search_background" android:textColor="#000000" />

        <Button android:id="@+id/info" android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dip"
            android:background="@drawable/info_btn" />
</LinearLayout>

如果我将EditText的layout_width设置为"fill_parent",它将占据整个父元素的宽度,导致按钮消失(我猜测它被隐藏在EditText下面)。

有人能给我解释一下吗?我希望按钮占据自己的宽度,而EditText占据剩余的宽度。

1个回答

25

你告诉EditText去填充整个屏幕(宽度充满整个屏幕),这就没有空间给你的按钮。

你想让按钮自适应其内容,让EditText填充剩余区域,你可以使用layout_weight属性:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:layout_gravity="top"
 android:gravity="center_vertical"
 android:paddingTop="5dip"
 android:paddingBottom="5dip"
 android:orientation="horizontal">
<EditText
    android:id="@+id/searchField"
    android:layout_width="0dip"
    android:layout_height="fill_parent"
    android:layout_weight="1"
    android:layout_marginLeft="10dip"
    android:paddingTop="2dip"
    android:paddingBottom="2dip"
    android:paddingLeft="10dip"
    android:paddingRight="10dip"
    android:radius="5dip"
    android:inputType="textVisiblePassword"
    android:textColor="#000000" />
<Button
    android:id="@+id/info"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="10dip"
    android:text="Blah" />
</LinearLayout>

(我将您的可绘制引用删除,以使其对其他人更通用)

另外,为了使您的XML文件在eclipse中看起来美观整洁且更易于维护:

窗口>首选项> XML> XML文件>编辑器

行宽120

拆分多个属性 勾选

不对齐最终括号 取消勾选

保留PCDATA中的空格标记 取消勾选

清除所有空行 ��消勾选

在关闭标签之前插入空格 勾选

点击确定

然后,当您打开XML文件时,可以修复它。使用CTRL + A,然后CTRL + SHIFT + F会将其格式化得很好!


1
非常感谢!缺少的属性"layout_weight"和"0dip"的宽度解决了一切问题。 - obo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接