我正在尝试创建聊天应用程序。聊天布局目前看起来像这样
相应的布局文件是
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:fillViewport="true"
android:layout_height="match_parent">
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.nirmal.chatadapter.MainActivity">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/colorPrimary">
<de.hdodenhof.circleimageview.CircleImageView
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/profile_image"
android:layout_width="40dp"
android:layout_height="wrap_content"
android:src="@drawable/iconuser"
app:civ_border_width="2dp"
app:civ_border_color="@color/White"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginStart="@dimen/marginLeftForToolbar"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/White"
android:text="UserName Here"
android:layout_marginTop="@dimen/marginTopBottomForBubble"
android:id="@+id/user_name"
android:textSize="@dimen/textMedium"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/White"
android:text="User details Here"
android:layout_marginTop="@dimen/marginTopBottomForBubble"
android:id="@+id/user_details"
android:textSize="@dimen/textSmall"/>
</LinearLayout>
</android.support.v7.widget.Toolbar>
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/toolbar"
android:layout_marginTop="@dimen/recyclerViewMargin"
android:isScrollContainer="true"
android:id="@+id/chatRecycler"
android:layout_above="@+id/chatBoxAndSend">
</android.support.v7.widget.RecyclerView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true"
android:orientation="horizontal"
android:layout_marginBottom="5dp"
android:id="@+id/chatBoxAndSend">
<EditText
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:minWidth="50dp"
android:maxWidth="50dp"
android:id="@+id/chatBox"
android:paddingStart="@dimen/cardViewPadding"
android:background="@drawable/rounded_chat_box"
android:layout_margin="@dimen/marginForChatBox"
/>
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.2"
android:background="@drawable/oval_button"
android:minWidth="50dp"
android:maxWidth="50dp"
android:text="Send"
android:imeOptions="flagNoExtractUi"
android:id="@+id/chatSendButton"
android:layout_margin="@dimen/marginForChatBox"
android:textColor="@color/Black"
/>
<!--<ImageView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.1"
android:id="@+id/send_button"
android:src="@drawable/send"
android:background="@drawable/oval_button"
android:layout_marginBottom="@dimen/marginForChatBox"
android:layout_marginTop="@dimen/marginForChatBox"
android:layout_marginEnd="@dimen/marginForChatBox"
/>
<de.hdodenhof.circleimageview.CircleImageView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.1"
android:id="@+id/send_button"
android:src="@drawable/send"
app:civ_border_width="2dip"
android:layout_marginEnd="@dimen/marginForChatBox"
app:civ_border_color="@color/greenChatColor"/>-->
</LinearLayout>
</RelativeLayout>
</ScrollView>
当我打开软键盘时,布局看起来像这样
我已将此添加到我的清单文件中
android:windowSoftInputMode="adjustPan|stateHidden"
输出不是我预期的结果。我希望recyclerview
在屏幕中央动态调整大小,工具栏和edittext保持完全可见。
正如您所见,工具栏已被向上推,即使滚动也不可见。 edittext由键盘提供的建议部分隐藏。我看到的一些帖子让我添加了一个我做过的滚动视图,结果仍然相同。我该如何解决这个问题?
答案 0 :(得分:0)
标志adjustPan错误。请改用adjustResize:
android:windowSoftInputMode="adjustResize|stateHidden"
adjustPan的作用相当于放大图片而不是屏幕然后平移 - 即移动图片以便看到它的不同部分。 (例如谷歌地图中的地图)。
答案 1 :(得分:0)
如果要在打开或关闭SoftInput时调整RecyclerView的大小,则可以使用下面的单行代码
((LinearLayoutManager)myRecyclerView.getLayoutManager()).setStackFromEnd(true);
有关更多信息,请阅读这篇文章:https://trinitytuts.com/tips/resize-recyclerview-on-android-softinput-keyboard-appear/
希望此代码对您有帮助