我是Android编程的新手,所以请耐心等待... 我正在尝试在android中创建一个聊天UI,因为我需要有一个edittext字段,并在屏幕的其余部分发送消息按钮和listview(消息)(在编辑文本上方和发送消息按钮的上方)。我可以为此创建UI,但是当我显示键盘时,listview中的最后一条消息与edittext字段重叠。
这是我的代码:
<?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="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="codes.electrux.lets_start_android.PostAuthenticate">
<ListView
android:layout_width="wrap_content"
android:layout_height="410dp"
android:id="@+id/listView" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentBottom="true">
<EditText
android:id="@+id/edit_msg"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:hint="@string/msg_to_send"
android:layout_gravity="bottom" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_send"
android:layout_gravity="bottom"
android:onClick="sendMessage" />
</LinearLayout>
</RelativeLayout>
以下是键盘显示时发生的情况:
这是没有键盘的样子:
我尝试了所有可以在stackoverflow上找到的解决方案,但老实说,无法理解其中的大多数。
请帮忙,
谢谢和问候,
electrux。
答案 0 :(得分:0)
尝试执行以下操作,
只需将列表高度从默认更改为wrap_content, 并为linearLayout提供一个id,使listView放在LinearLayout上面。
<ListView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/listView"
android:layout_above="@+id/test"/>
<LinearLayout
android:id="@+id/test"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true">
答案 1 :(得分:0)
请尝试这样做。
此处您的线性布局将包含在列表视图中,因此它将覆盖列表的最后一项。只需更改如下,它就会起作用。
只需将此代码替换为您的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="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="codes.electrux.lets_start_android.PostAuthenticate">
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="410dp"
android:layout_above="@+id/linearLayout" />
<LinearLayout
android:id="@+id/linearLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:layout_alignParentBottom="true">
<EditText
android:id="@+id/edit_msg"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:layout_weight="1"
android:hint="Send Msg" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:onClick="sendMessage"
android:text="Send Data" />
</LinearLayout>
</RelativeLayout>
它完成了。
希望这会对您有所帮助。
答案 2 :(得分:0)
你应该做的第一件事是将ListView设置为match_parent widht和height。
接下来,在您的清单中,您应该声明您的活动:
<activity android:name=".ConversationChatActivity"
android:windowSoftInputMode="adjustResize"
>
并且在活动中listView应该应用这个:
listview = (ListView) this.findViewById(R.id.listMessages);
listview.setTranscriptMode(ListView.TRANSCRIPT_MODE_NORMAL);
listview.setStackFromBottom(true);
希望它可以帮到你!!