无论我做什么,它都无法正常工作。这是一个布局代码,我试图将其实现到另一个布局中,稍后我会解释。以下是精美布局的片段:
<?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="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:focusable="true"
android:focusableInTouchMode="true"
android:padding="8dip" >
<ListView android:id="@+id/in"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:stackFromBottom="true"
android:transcriptMode="alwaysScroll"
android:layout_gravity="bottom"
android:layout_weight="1" />
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<EditText android:id="@+id/edit_text_out"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_gravity="bottom" />
<Button android:id="@+id/action_send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/action_send" />
</LinearLayout>
</LinearLayout>
我想使用此布局将其放入另一个LinearLayout,以便我可以在给定的Fragment上拆分屏幕。这就是我想要实现的目标:
<?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="match_parent"
android:layout_height="match_parent"
android:weightSum="2"
android:orientation="vertical" >
<LinearLayout android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="0.8"
android:background="#192832">
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1.2"
android:background="#193222"
android:gravity="bottom" >
<ListView android:id="@+id/in"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:stackFromBottom="true"
android:transcriptMode="alwaysScroll"
android:layout_gravity="bottom" />
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<EditText android:id="@+id/edit_text_out"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_gravity="bottom" />
<Button android:id="@+id/action_send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/action_send" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
正如您所看到的,它实际上已被拆分,但ListView
覆盖甚至使EditText
和Button
消失。我应该做些什么改变才能完成所有工作?我正在尝试android:layout_weight
但没有成功。将android:layout_weight="1"
添加到ListView
部分后,我就松开了。我不想使用RelativeLayout
,但如果这里没有解决方案,我会继续使用。
答案 0 :(得分:1)
您需要一个RelativeLayout来将EditText和Button与底部对齐。我将你的第二个内部LinearLayout更改为RelativeLayout。然后,我将EditText和Button与父视图的底部对齐。并且您的ListView在EditText和Button上方对齐。以下是我的更改:
<?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="match_parent"
android:layout_height="match_parent"
android:weightSum="2"
android:orientation="vertical">
<LinearLayout android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="0.8"
android:background="#192832" />
<RelativeLayout android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1.2"
android:background="#193222"
android:gravity="bottom">
<ListView android:layout_above="@+id/edit_text_and_button"
android:id="@+id/in"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:stackFromBottom="true"
android:transcriptMode="alwaysScroll"
android:layout_gravity="bottom" />
<LinearLayout android:id="@id/edit_text_and_button"
android:layout_alignParentBottom="true"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText android:id="@+id/edit_text_out"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_gravity="bottom" />
<Button android:id="@+id/action_send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/action_send" />
</LinearLayout>
</RelativeLayout>
</LinearLayout>
答案 1 :(得分:0)
你的问题是ListView的高度设置为match_parent,这会将其下方的LinearLayout推到屏幕外。要解决此问题,您可以将底部的LinearLayout的权重更改为0,将ListView的权重更改为一,这样它将首先计算底部栏的大小,然后ListView将扩展为填补剩余的空间。这段代码似乎达到了你想要的目的:
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="0.8"
android:background="#fff" >
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1.2"
android:background="#fff"
android:gravity="bottom"
android:orientation="vertical" >
<ListView
android:id="@+id/in"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:stackFromBottom="true"
android:transcriptMode="alwaysScroll" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_weight="0" >
<EditText
android:id="@+id/edit_text_out"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:layout_weight="1" />
<Button
android:id="@+id/action_send"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@string/action_send"
android:layout_weight="1" />
</LinearLayout>
</LinearLayout>