下面的RecyclerView中的item里面的数字部分是EditText.在刚完成的时候就发现了一个问题.RecyclerView和EditText合用的时候请求焦点冲突,造成输入法软键盘一闪而逝的问题.后来网上找到方法解决了. 当时找到的不是这一个,解决方法是一样的

主要是在layout文件的 RecyclerView节点下添加:

 android:descendantFocusability="beforeDescendants"
 android:fastScrollEnabled="false"

在清单文件的这个Activity下添加:

android:windowSoftInputMode="stateHidden|adjustPan"

确实解决了问题,但是新的问题随之而来:

在输入底部的item的时候,软键盘会把上面的布局顶上去,本来也没什么,但是这里,目标总额是随着输入变化的,让用户看到总额体验会好很多.

试了一些方法,在网上也找了一下,都没有很好的解决方法,要么是无效,要么效果不理想.
后来经过尝试,解决了这个问题.

  1. 把RecyclerView套入一个Scrollview:
 <ScrollView
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  <android.support.v7.widget.RecyclerView
            android:id="@+id/rv"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="@dimen/view_dp_10"
            android:descendantFocusability="beforeDescendants"//这2句还是保留的
            android:fastScrollEnabled="false"
      </ScrollView>
  1. 在清单文件中修改

    android:windowSoftInputMode=”stateHidden|adjustPan”

    为:

    android:windowSoftInputMode=”stateHidden|adjustResize”

这2步缺一不可,就可以解决焦点混乱和布局被顶上去的问题了.

但是仅仅这样使用的话又会出现新的滑动冲突的问题,导致滑动失去惯性,丝滑的感觉就再也没有了,进一步了为了牛奶般的丝滑,把ScrollView 替换为下面的自定义ScrollView 就可以了:

public class NestingScrollview  extends ScrollView {
    private int downX;
    private int downY;
    private int mTouchSlop;
    private boolean autoScroll = true;
     * 多层嵌套时的自动滚动
     * @param autoScroll
    public void setAutoScroll(boolean autoScroll) {
        this.autoScroll = autoScroll;
     * 防止多层嵌套时候的自动滚动
     * @param rect
     * @return
    @Override
    protected int computeScrollDeltaToGetChildRectOnScreen(Rect rect) {
            return autoScroll?super.computeScrollDeltaToGetChildRectOnScreen(rect):0;
    public NestingScrollview(Context context) {
        super(context);
        mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
    public NestingScrollview(Context context, AttributeSet attrs) {
        super(context, attrs);
        mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
    public NestingScrollview(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
    @Override
    public boolean onInterceptTouchEvent(MotionEvent e) {
        int action = e.getAction();
        switch (action) {
            case MotionEvent.ACTION_DOWN:
                downX = (int) e.getRawX();
                downY = (int) e.getRawY();
                break;
            case MotionEvent.ACTION_MOVE:
                int moveY = (int) e.getRawY();
                if (Math.abs(moveY - downY) > mTouchSlop) {
                    return true;
        return super.onInterceptTouchEvent(e);
                                    今天开发遇到了一个特别奇怪的bug,我所实现的需求是顶上一个Editext,下面是RecyclerView所实现的列表,要实现一个搜索过滤器的功能,这个功能只要在Adapter中实现Filterable接口,重写getFilter()即可,相对比较简单。
但是我当我实现完后却遇到个问题,当我在Edittext输入值进行搜索时,搜索出内容时没问题,继续输入,当搜索出没内容时,软键盘消失,并且无论...
  public void initView() {
        getWindow().getDecorView().getViewTreeObserver().addOnGlobalLayoutListener(new KeyboardOnGlobalChangeListener());//监听软键盘弹出
        recyc...
                                    ---------------------------------------------------------------------------------------------------------------------------------------------------------------
转载请声明:本文来自  https://blog.csdn.net/shiji...
                                    最近在做一个客服聊天项目,使用recyclerview做聊天列表,但是遇到了一个无法处理的问题,这问题困了我半天,也是醉了,之前使用listview没有遇到这样的,对于键盘的各种尝试都尝试了,最后还是没有解决,先来看看我已开始常规的搬砖:布局xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width=...
当消息数量能占满屏幕时,底部显示最后一条,依次往上排列
当消息数量不能占满屏幕时,列表部分从上往下排列,列表下部分空白
点击输入框,弹起输入法,把输入区域和消息列表整体都顶起来,当输入区域顶起来触不到消息列表的最后一条,那仍然在列表显示比较少的消息列表
                                    通常情况下,需要在RecyclerView上加布局可以通过自己定义adapter然后add header来添加。
但是也还有一种方法来实现,那就是用ScrollView来嵌套,比如这样的代码:
&lt;ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"...
                                    Android 在EditText进行软键盘弹出时,通常会遮挡输入框,遮挡RecyclerView
解决方案:全局监听当前屏幕当前显示布局的大小以及实际上该布局的高度,如果实际显示的高度大于屏幕高度,则视为软键盘弹出,进行控件的动态改变即可。
 private ViewTreeObserver.OnGlobalLayoutListener getGlobalLayoutListener(final...
项目里有用到RecyclerView 嵌套edittext当获取焦点时补键盘遮挡:在mainfile文件对应的activity设置对应的android:windowSoftInputMode属性adjustPan,adjustResize
 均无效,在android:transcriptMod
                                    最近遇到的一个问题,基类里面有toolbar,子类里面recyclerView/scrollView里面item的edittext 软键盘被遮挡;
测试了,没有加toolbar的activity没有问题,不会遮挡;
toolbar直接加在activity里面,没问题,不会遮挡;
但是,toolbar放基类里面,就会出现问题。
&lt;?xml version="1.0" encoding...
                                    效果概述:
模仿QQ聊天记录
效果图如下:模拟器只有逍遥安卓了,实在不想重走genymotion的坑,但是逍遥没法弹出软键盘,就这么看吧,可以下载源码在手机上运行,就可以看出来了。