Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.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
Java 底部导航栏(布局)通过键盘向上移动_Java_Android - Fatal编程技术网

Java 底部导航栏(布局)通过键盘向上移动

Java 底部导航栏(布局)通过键盘向上移动,java,android,Java,Android,我正在使用LinearLayout自定义底部导航栏。因此,每当我关注编辑文本字段时,底部视图就会与键盘一起出现 我已尝试更改清单中的android:windowSoftInputMode=“adjustPan”和android:windowSoftInputMode=“adjustResize”。它可以工作,但使用时滚动不起作用 以键盘为中心: 如果没有键盘: }如果你想让键盘不向上推底部的横杆,它应该留在键盘后面,那么只需在你的活动中添加这个标签即可 android:windowSoftI

我正在使用
LinearLayout
自定义底部导航栏。因此,每当我关注编辑文本字段时,底部视图就会与键盘一起出现

我已尝试更改清单中的
android:windowSoftInputMode=“adjustPan”
android:windowSoftInputMode=“adjustResize”
。它可以工作,但使用时滚动不起作用

以键盘为中心:

如果没有键盘:


}

如果你想让键盘不向上推底部的横杆,它应该留在键盘后面,那么只需在你的活动中添加这个标签即可

android:windowSoftInputMode="adjustNothing"
否则,您可以通过添加键盘可见/隐藏事件,并相应地显示/隐藏底部栏的方式来完成。像

mainLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {
        if (mainLayout != null) {
            int heightDiff = mainLayout.getRootView().getHeight() - mainLayout.getHeight();
            if (heightDiff > 200) { 
               //keyboard is open, hide layout
            } else {
               //keyboard is hidden, show layout
            }
        }
    }
});

你能分享你的版面截图来描述这个问题吗,以及你希望它是什么样子。你能解释更多吗?我的意思是你的问题是什么,你希望它看起来怎么样。@Asad Ali Choudry:我现在已经添加了布局截图。@JDevoloper底部视图与键盘一起出现。当键盘可见时,我需要阻止/隐藏底部视图。是的,我在清单中也尝试了上面的代码。它的工作正是我需要的,但无法滚动(如果我有滚动视图)。然后尝试我的其他自定义解决方案,检测键盘显示/隐藏事件,并相应地显示/隐藏底部布局。好的,我将尝试第二个选项。你能告诉我那个dpToPx吗。我应该用什么来代替那个dpToPx?没必要,我已经移除了。这只是为了精确,但没有精确,它也可以工作。你也可以从这篇文章获得帮助。但我让你觉得很简单。
android:windowSoftInputMode="adjustNothing"
mainLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {
        if (mainLayout != null) {
            int heightDiff = mainLayout.getRootView().getHeight() - mainLayout.getHeight();
            if (heightDiff > 200) { 
               //keyboard is open, hide layout
            } else {
               //keyboard is hidden, show layout
            }
        }
    }
});