简体   繁体   English

回收器视图在键盘打开时向上隐藏消息/如何在键盘打开时防止回收器视图滚动

[英]recycler view hides message upward when keyboard is open / how to keep recycler View from scrolling when keyboard is on

I am making chat app but when I send message recycler view does not show first 2 messages because it is up I want something like whatsapp if I open keyboard recycler view is shown from start I tried following but it sticks chats to end even after I close keyboard:我正在制作聊天应用程序,但是当我发送消息回收器视图时不显示前 2 条消息,因为它已启动我想要类似 whatsapp 如果我打开键盘回收器视图从一开始就显示我尝试关注但即使在我关闭后它也会结束聊天键盘:

            LinearLayoutManager layoutManager = new LinearLayoutManager(getApplicationContext());
            layoutManager.setStackFromEnd(true);
            recyclerView.setLayoutManager(layoutManager);

. . following is my code:以下是我的代码:

public class UserChat extends AppCompatActivity {

private RecyclerView recyclerView;
private Button btnSend;
private EditText messageBox;
private TextView name_txt;
final ArrayList<ChatModel> chatModels = new ArrayList<>();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_user_chat);

    recyclerView = findViewById(R.id.chat_list);
    messageBox = findViewById(R.id.et_chat_box);
    btnSend = findViewById(R.id.btn_chat_send);
    name_txt = findViewById(R.id.name_txt);
    String username = "username not set";
    Bundle extras = getIntent().getExtras();
    if(extras!=null){
        username = extras.getString("username");
    }
    name_txt.setText(username);

    btnSend.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            int i = 1;
            i++;
            ChatModel chatModel = new ChatModel();
            chatModel.setId(i);
            chatModel.setMe(true);
            chatModel.setMessage(messageBox.getText().toString().trim());

            chatModels.add(chatModel);

            ChatAdapter chatAdapter = new ChatAdapter(chatModels, getApplicationContext());
            recyclerView.setHasFixedSize(true);
            recyclerView.setLayoutManager(new LinearLayoutManager(getApplicationContext()));
            recyclerView.setAdapter(chatAdapter);
            messageBox.setText("");
        }
    });
}

} }

following is my XML:以下是我的 XML:

   <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 
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=".UserChat">

<androidx.recyclerview.widget.RecyclerView
    android:id="@+id/chat_list"
    android:layout_width="406dp"
    android:layout_height="611dp"
    android:paddingStart="15dp"
    android:paddingTop="15dp"
    app:layout_constrainedHeight="true"
    app:layout_constraintBottom_toTopOf="@+id/view"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="1.0"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/toolbar"
    app:layout_constraintVertical_bias="0.974" />

<View
    android:id="@+id/view"
    android:layout_width="match_parent"
    android:layout_height="1dp"
    android:background="#e0e0e0"
    app:layout_constraintBottom_toTopOf="@+id/layout_gchat_chatbox" />

<RelativeLayout
    android:id="@+id/layout_gchat_chatbox"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintStart_toStartOf="parent">


    <EditText
        android:id="@+id/et_chat_box"
        android:layout_width="333dp"
        android:layout_height="48dp"
        android:layout_marginStart="16dp"
        android:layout_marginEnd="0dp"
        android:layout_toStartOf="@+id/btn_chat_send"
        android:background="@android:color/transparent"
        android:hint="Enter Message"
        android:inputType="text"
        android:maxLines="6"
        tools:ignore="Autofill" />

    <Button
        android:id="@+id/btn_chat_send"
        android:layout_width="78dp"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_marginEnd="0dp"
        android:background="?attr/selectableItemBackground"
        android:text="Send"
        android:textColor="@color/teal_700" />

</RelativeLayout>

<androidx.appcompat.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="408dp"
    android:layout_height="64dp"
    android:background="#2E2A2A"
    android:minHeight="?attr/actionBarSize"
    android:theme="?attr/actionBarTheme"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.333"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

<TextView
    android:id="@+id/name_txt"
    android:layout_width="wrap_content"
    android:layout_height="39dp"
    android:layout_marginTop="16dp"
    android:text="TextView"
    android:textColor="#FAF8F8"
    android:textSize="21sp"
    app:layout_constraintEnd_toEndOf="@+id/toolbar"
    app:layout_constraintHorizontal_bias="0.368"
    app:layout_constraintStart_toStartOf="@+id/toolbar"
    app:layout_constraintTop_toTopOf="parent" />

<ImageView
    android:id="@+id/imageView3"
    android:layout_width="67dp"
    android:layout_height="53dp"
    android:layout_marginTop="8dp"
    app:layout_constraintEnd_toStartOf="@+id/name_txt"
    app:layout_constraintHorizontal_bias="0.673"
    app:layout_constraintStart_toStartOf="@+id/toolbar"
    app:layout_constraintTop_toTopOf="parent"
    app:srcCompat="@drawable/female" />

</androidx.constraintlayout.widget.ConstraintLayout>
int i = 1;
i++;

always u send i=2总是你发送 i=2

There was a problem in height of the recycler view.回收站视图的高度存在问题。 I saw it here: https://github.com/stfalcon-studio/ChatKit/issues/103 .我在这里看到了: https://github.com/stfalcon-studio/ChatKit/issues/103 @andriizhumela said that you need to put match parent in width and height of recycler view. @andriizhumela 说您需要将匹配父级放在回收站视图的宽度和高度中。 so now it is solved所以现在解决了

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 在循环器视图中切换到下一个EditText时,如何保持软键盘的连接? - How can I keep the soft keyboard up when switching to the next EditText in a recycler view? 出现软键盘时使用 Recycler View 调整布局大小 - Resizing of Layout with Recycler View when the soft keyboard appears 从回收者视图中删除项目时,回收者视图未刷新吗? - Recycler view is not refreshed when i delete an item from recycler view? Recycler View 在滚动时不使用提供的布尔值一致地更新视图 - Recycler View not updating views consistently using provided booleans when scrolling 如何在Horizenatl滚动中使用Recycler视图 - How to use Recycler view in Horizenatl Scrolling 当视图隐藏时回收器视图不会取消选择 - Recycler View Not Deselecting When View Is Hidden 在回收站视图项目中单击增量按钮时,如何停止在回收站视图中自动向上滚动? - How to stop automatic scroll up in recycler view when increment button is clicked in recycler view item? 回收器视图未在导航抽屉中滚动 - Recycler View is not scrolling in Navigation drawer 在Recycler View中实施无限滚动 - Implementing Endless scrolling in Recycler View 如何从Recycler View适配器类打开任何类型的文件? - How to open any type of file from recycler view adapter class?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM