Android EditText悬浮在输入法之上

使用 android:windowSoftInputMode="adjustResize" 会让界面整体被顶上去,很多时候我们不需要这样的情况出现,这里给出另一个方案.

**思路:监听输入法的状态,然后动态的滚动 EditText 所在的 ViewGroup 或者View **

1. Android Manifest.xml

 //非adjustResize 

2. 布局文件

                        

3. Activity里设置监听,滚动 input 视图

public class InputActivity extends AppCompatActivity {    private RelativeLayout rLayout;    private View mInputLayout;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_input);        mInputLayout = findViewById(R.id.rl_inputdlg_view);        rLayout = ((RelativeLayout) findViewById(R.id.root));        //输入法到底部的间距(按需求设置)        final int paddingBottom = DisplayUtil.dp2px(this, 5);        rLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {            @Override            public void onGlobalLayout() {                Rect r = new Rect();                rLayout.getWindowVisibleDisplayFrame(r);                //r.top 是状态栏高度                int screenHeight = rLayout.getRootView().getHeight();                int softHeight = screenHeight - r.bottom ;                Log.e("test","screenHeight:"+screenHeight);                Log.e("test","top:"+r.top);                Log.e("test","bottom:"+r.bottom);                Log.e("test", "Size: " + softHeight);                if (softHeight>100){//当输入法高度大于100判定为输入法打开了                    rLayout.scrollTo(0, softHeight+paddingBottom);                }else {//否则判断为输入法隐藏了                    rLayout.scrollTo(0, paddingBottom);                }            }        });    }}

效果图:

1. 不做处理前:

2. 处理后的效果:

补充:

在我的手机上(三星s7)输入法的高度在1000px左右(我的输入法高度是1040px),理论上你只要把这个值放在 0~~1040直接就可以检测到输入法的展开和隐藏.

在代码中写的尺寸都是px单位的,100px也只有50dp不到,一般输入法的高度不可能比它小.当然你不喜欢可以设其他的,但是不宜过大.=.=

更多相关文章

  1. android 标题栏的高度
  2. Android开发,addlistener和setlistener的区别
  3. Android(安卓)SeekBar
  4. android——Seneor(获得数据值流程以及同时监听多个sensor)
  5. Android中的菜单-ContextMenu,PopupMenu
  6. android netd和kernel&frameworks的通信逻辑
  7. Android中Gallery和ImageSwitcher同步自动(滚动)播放图片库
  8. android AlertDialog对话框
  9. Android(安卓)中ActionBar+fragment实现页面导航的实例

随机推荐

  1. 重新签名apk
  2. Android开机自动启动app
  3. Android百分比布局初探
  4. Android布局技巧大全(持续更新..........
  5. Android 自定义view(二) 如何实现自定义
  6. Android DeepLink原理与应用(2)
  7. android加速度传感器Accelerometer
  8. You must call removeView() on the chil
  9. 使用 Android NDK 的一般方法:
  10. Android实现点击事件的4种方式