android | androidx 聊天用RecyclerView获取键盘和消息自动显示在最底部

话不多说,直接代码,自行理解

第一步

在manifests的application中添加

android:windowSoftInputMode="stateHidden|adjustResize"

第二步

/**     * 获取一个视图的宽高(软键盘)     */    private class KeyboardListener implements ViewTreeObserver.OnGlobalLayoutListener {        private boolean isShow;        private int getScreenHeight() {            DisplayMetrics outMetrics = new DisplayMetrics();            getWindowManager().getDefaultDisplay().getRealMetrics(outMetrics);            return outMetrics.heightPixels;        }        @Override        public void onGlobalLayout() {            Rect rect = new Rect();            getWindow().getDecorView().getWindowVisibleDisplayFrame(rect);            int screenHeight = getScreenHeight();            int keyboardHeight = screenHeight - rect.bottom;//软键盘高度            if (Math.abs(keyboardHeight) > screenHeight / 5 && !isShow) {                if (recyclerView!= null && adapter != null && adapter.getItemCount() != 0) {           recyclerView.smoothScrollToPosition(adapter.getItemCount() - 1);        }                isShow = true;            } else {                isShow = false;            }        }    }

第三步

在onCreate中调用即可

getWindow().getDecorView().getViewTreeObserver().addOnGlobalLayoutListener(new KeyboardListener());

最后(完成)

数据初始化最底部
adapter.addItem(data);recyclerView.smoothScrollToPosition(adapter.getItemCount() - 1);

附加

键盘在输入框半截问题(解决)

<androidx.appcompat.widget.AppCompatEditText        android:id="@+id/xxx"        android:layout_width="0dp"        android:layout_height="50dp"        android:layout_gravity="center"        android:layout_marginStart="15dp"        android:layout_marginTop="5dp"        android:layout_marginEnd="10dp"        android:layout_weight="19"                android:background="@drawable/cover"                android:inputType="textMultiLine"        android:paddingStart="10dp"        android:paddingTop="5dp"        android:singleLine="false"        android:textColor="@color/dark_blue"        tools:ignore="RtlSymmetry" />
<?xml version="1.0" encoding="UTF-8"?><layer-list xmlns:android="http://schemas.android.com/apk/res/android">    <item>        <shape>            <solid android:color="#0000" />        </shape>    </item>    <!-- 主体背景颜色值 -->    <item android:bottom="10dp">        <shape android:shape="rectangle">            <solid android:color="#fff" />            <padding android:bottom="15dp" />            <corners android:radius="5dp" />            <stroke                android:width="1dp"                android:color="#efefef" />        </shape>    </item></layer-list>

更多相关文章

  1. Android 键盘布局总结
  2. Android开发EditText不自动弹出键盘
  3. 关于EditText 焦点 及 软键盘弹出引起不适 的几点
  4. Android 5.0 SystemUI 视图框架
  5. Android中软键盘弹出时底部菜单上移问题
  6. Android中关于软键盘的一些设置
  7. Android EditText通过imeOptions属性控制软键盘的回车键变化:回车
  8. Android模拟键盘和键盘监听
  9. Android软键盘挡住输入框

随机推荐

  1. Android封装Toast工具类
  2. Android(安卓)gradle测试
  3. android ftp服务器实现
  4. [置顶] Android中显示AlertDialog对话框
  5. 分页控件1
  6. android ClassNotFoundException: Didn't
  7. 监听Bluetooth
  8. Android拷贝图片到指定文件路径
  9. Android——intent分享图片到微信好友、
  10. Android(安卓)MediaPlayer 简单综合应用