美文网首页
android 解决输入法键盘遮盖布局问题

android 解决输入法键盘遮盖布局问题

作者: 海云志 | 来源:发表于2017-12-05 11:24 被阅读683次

    下面提供完整的代码及布局文件:

    1. MainActivity
      public class MainActivity extends Activity {

      private LinearLayout mRoot;
      private Button mSubmit;

      @Override
      protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      mRoot = (LinearLayout) findViewById(R.id.root);
      mSubmit = (Button) findViewById(R.id.submit);
      controlKeyboardLayout(mRoot, mSubmit);
      }

      /**

      • @param root 最外层布局,需要调整的布局
      • @param scrollToView 被键盘遮挡的scrollToView,滚动root,使scrollToView在root可视区域的底部
        */
        private void controlKeyboardLayout(final View root, final View scrollToView) {
        root.getViewTreeObserver().addOnGlobalLayoutListener( new OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
        Rect rect = new Rect();
        //获取root在窗体的可视区域
        root.getWindowVisibleDisplayFrame(rect);
        //获取root在窗体的不可视区域高度(被其他View遮挡的区域高度)
        int rootInvisibleHeight = root.getRootView().getHeight() - rect.bottom;
        //若不可视区域高度大于100,则键盘显示
        if (rootInvisibleHeight > 100) {
        int[] location = new int[2];
        //获取scrollToView在窗体的坐标
        scrollToView.getLocationInWindow(location);
        //计算root滚动高度,使scrollToView在可见区域
        int srollHeight = (location[1] + scrollToView.getHeight()) - rect.bottom;
        root.scrollTo(0, srollHeight);
        } else {
        //键盘隐藏
        root.scrollTo(0, 0);
        }
        }
        });
        }

    }

    1. activity_main.xml
      <?xml version="1.0" encoding="utf-8"?>
      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:id="@+id/root"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:orientation="vertical"
      android:gravity="center_vertical" >

      <EditText android:layout_width="fill_parent"
      android:layout_height="50dip"
      android:hint="edit1"/>
      <EditText android:layout_width="fill_parent"
      android:layout_height="50dip"
      android:hint="edit2"/>
      <EditText android:layout_width="fill_parent"
      android:layout_height="50dip"
      android:hint="edit3"/>
      <Button android:id="@+id/submit"
      android:layout_width="fill_parent"
      android:layout_height="50dip"
      android:text="submit"/>

    </LinearLayout>

    原文地址:http://blog.csdn.net/yqichang/article/details/11705235

    相关文章

      网友评论

          本文标题:android 解决输入法键盘遮盖布局问题

          本文链接:https://www.haomeiwen.com/subject/wtwqixtx.html