以下是我希望从我的布局中获得的纵向UI的简化版本:
这是另一个布局上面的ListView。
复杂的是,当希望将大量行添加到EditText时,我希望整个底部布局(在本例中为“Button2”)可见:
我一直试图通过在LinearLayout中嵌套RelativeLayout来实现这一目标。不幸的是,当我使用EditText获得我想要的效果时,ListView会消失,例如
我尝试过很多替代品,但似乎没有任何目标可以实现。
这是我的XML:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<FrameLayout
android:id="@+id/AAA"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</FrameLayout>
<LinearLayout
android:id="@+id/BBB"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/AAA"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/list_container"
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1" >
<ListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:entries="@array/list_items"/>
</LinearLayout>
<RelativeLayout
android:id="@+id/input_parent"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<Button
android:id="@+id/button1"
android:layout_above="@+id/bottom_layout"
android:layout_width="100dip"
android:layout_height="50dip"
android:clickable="true"
android:text="Button1" />
<EditText
android:id="@+id/edittext"
android:layout_above="@+id/bottom_layout"
android:layout_toRightOf="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="50dip"
android:imeOptions="flagNoExtractUi"
android:inputType="textMultiLine"
android:maxLines="8"
android:scrollbars="vertical" />
<!-- Align this with the bottom so when the input text area gets
really big it doesn't push this section off screen -->
<LinearLayout
android:id="@+id/bottom_layout"
android:layout_alignParentBottom="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<Button
android:id="@+id/button2"
android:layout_width="match_parent"
android:layout_height="150dip"
android:layout_gravity="bottom"
android:clickable="true"
android:text="Button2" />
</LinearLayout>
</RelativeLayout>
</LinearLayout>
</RelativeLayout>
如果我从bottom_layout中删除android:layout_alignParentBottom="true"
,则会出现ListView内容,但是后来我失去了EditText所需的效果。
有人可以帮忙吗?我需要支持OS 2.2 +。
答案 0 :(得分:1)
简化布局有点像这样:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<FrameLayout
android:id="@+id/AAA"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</FrameLayout>
<RelativeLayout
android:id="@+id/BBB"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/AAA"
android:orientation="vertical" >
<ListView
android:id="@+id/list"
android:layout_above="@+id/edittext"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:entries="@array/list_items"/>
<Button
android:id="@+id/button1"
android:layout_above="@+id/bottom_layout"
android:layout_width="100dip"
android:layout_height="50dip"
android:clickable="true"
android:text="Button1" />
<EditText
android:id="@+id/edittext"
android:layout_above="@+id/bottom_layout"
android:layout_toRightOf="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="50dip"
android:imeOptions="flagNoExtractUi"
android:inputType="textMultiLine"
android:maxLines="8"
android:scrollbars="vertical" />
<!-- Align this with the bottom so when the input text area gets
really big it doesn't push this section off screen -->
<LinearLayout
android:id="@+id/bottom_layout"
android:layout_alignParentBottom="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<Button
android:id="@+id/button2"
android:layout_width="match_parent"
android:layout_height="150dip"
android:layout_gravity="bottom"
android:clickable="true"
android:text="Button2" />
</LinearLayout>
</RelativeLayout>
</RelativeLayout>
似乎给出了你所描述的结果。