我有一个垂直布局:2个文本字段和一个水平条按钮:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#ff00ff00"
android:orientation="vertical"
android:padding="4dp" >
<EditText
android:id="@+id/et_email"
android:layout_width="fill_parent"
android:layout_weight="1"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:background="#ff00ffff"
android:inputType="textEmailAddress" >
</EditText>
<EditText
android:id="@+id/et_comment"
android:layout_width="fill_parent"
android:layout_weight="1"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:background="#ff00ffff"
android:inputType="textMultiLine"
android:maxLines="5"
android:minLines="5" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<Button
android:id="@+id/btn_send"
android:layout_weight="0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="OK" />
<Button
android:id="@+id/btn_show"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Some very long text" />
<Button
android:id="@+id/btn_cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Cancel" />
</LinearLayout>
</LinearLayout>
我希望按钮栏具有wrap_content
大小政策(甚至不能将它们固定为大小,因为此应用具有不同的本地化)。我还希望文本字段的宽度与按钮框的宽度相同。以下是上面的xml在设计器(Eclipse + ADT)中看起来如何选择平台17(以及我希望它看起来如何)。颜色只是为了便于调试:
以下是Android 4.1平板电脑的外观:
此布局用作Dialog的自定义布局。除了设置内容和标题外,没有对Dialog进行任何操作。
有趣的事实:它在Android 3.1平板电脑上看起来与我想要的一样(和ADT设计师节目一样)。但不是4.1。
如何实现所需的布局?
答案 0 :(得分:1)
这看似愚蠢但似乎有效。尝试放入嵌套布局。更改外部布局宽度/高度以填充父级。然后,在内部,使用所有视图等进行另一个线性布局。给内部LinearLayout赋予wrap_content值,并且应该这样做。必须有一个更好的方法来做到这一点,但我现在想不到它。
答案 1 :(得分:1)
您可能希望使用RelativeLayout来完成您正在寻找的内容。尝试将xml更改为以下内容:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#ff00ff00"
android:padding="4dp" >
<EditText
android:id="@+id/et_email"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/buttonbar"
android:layout_alignRight="@+id/buttonbar"
android:layout_marginTop="2dp"
android:background="#ff00ffff"
android:inputType="textEmailAddress" >
</EditText>
<EditText
android:id="@+id/et_comment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/buttonbar"
android:layout_alignRight="@+id/buttonbar"
android:layout_below="@+id/et_email"
android:layout_marginTop="2dp"
android:background="#ff00ffff"
android:inputType="textMultiLine"
android:maxLines="5"
android:minLines="5" />
<RelativeLayout
android:id="@+id/buttonbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/et_comment" >
<Button
android:id="@+id/btn_send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/btn_show"
android:layout_alignTop="@+id/btn_show"
android:layout_toLeftOf="@+id/btn_show"
android:text="OK" />
<Button
android:id="@+id/btn_show"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="Some very long text" />
<Button
android:id="@+id/btn_cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/btn_show"
android:layout_alignTop="@+id/btn_show"
android:layout_toRightOf="@+id/btn_show"
android:text="Cancel" />
</RelativeLayout>
</RelativeLayout>