Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何保持滑动抽屉远离虚拟键盘顶部_Android_Keyboard_Focus_Drawer - Fatal编程技术网

Android 如何保持滑动抽屉远离虚拟键盘顶部

Android 如何保持滑动抽屉远离虚拟键盘顶部,android,keyboard,focus,drawer,Android,Keyboard,Focus,Drawer,我一整天都在为此挠头。在我的一项活动中(而且只有一项),当我调用虚拟键盘时,滑动抽屉手柄会出现在虚拟键盘上方。我设法在我的应用程序中的所有其他活动上解决了这个问题,方法是在我的Manafest.xml文件中的每个活动(包括有问题的活动)中放置安卓:windowSoftInputMode=“adjustPan”。此外,据我所知,活动中没有一个对象有焦点(如果有,我就不知道如何找到它)。我已经使用这个.getCurrentFocus()检查了焦点,然后对返回的视图(如果有)执行view.clearF

我一整天都在为此挠头。在我的一项活动中(而且只有一项),当我调用虚拟键盘时,滑动抽屉手柄会出现在虚拟键盘上方。我设法在我的应用程序中的所有其他活动上解决了这个问题,方法是在我的Manafest.xml文件中的每个活动(包括有问题的活动)中放置安卓:windowSoftInputMode=“adjustPan”。此外,据我所知,活动中没有一个对象有焦点(如果有,我就不知道如何找到它)。我已经使用这个.getCurrentFocus()检查了焦点,然后对返回的视图(如果有)执行view.clearFocus()。到目前为止,它还没有返回一个视图,据我所知,没有任何东西有焦点


有什么想法吗?

这是我的解决办法。。在保存EditText的活动中,我有一个子类扩展了
EditText
。在这个子类中,我重写了检查键盘是否打开的
onMeasure()
方法

    public static class MyEditText extends EditText {
            MyActivity context;

            public void setContext(MyActivity context) {
                this.context = context;
            }

            @Override
            protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
                int height = MeasureSpec.getSize(heightMeasureSpec);
                Activity activity = (Activity)getContext();
                Rect rect = new Rect();
                activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(rect);
                int statusBarHeight = rect.top;
                int screenHeight = activity.getWindowManager().getDefaultDisplay().getHeight();
                int diff = (screenHeight - statusBarHeight) - height;
                // assume all soft keyboards are at least 128 pixels high
                if (diff>128)
                     context.showHandle(false);
                else
                     context.showHandle(true);

                super.onMeasure(widthMeasureSpec, heightMeasureSpec);
            }
    }
然后在活动中,如果键盘处于打开状态,则抽屉把手设置为1px x 1px透明图像,如果键盘处于隐藏状态,则显示真实把手:

private void showHandle(boolean show) {
    ImageView drawer_handle = (ImageView) findViewById(R.drawable.handle);
    if (show)
            drawer_handle.setImageResource(R.drawable.handle);
    else
            drawer_handle.setImageResource(R.drawable.handle_blank);
}
最后,确保在
MyActivity的
onCreate()
中调用
setContext()

MyEditText met = (MyEditText) findViewById(R.id.edit_text);
met.setContext(this);

我遇到了同样的问题,发现你的问题是第一个结果。如果你得到了一个有效的解决方案,请在下面随意发布。