当前位置: 首页 > 知识库问答 >
问题:

软键盘打开时,BottomSheetDialogFragment扩展到状态栏之外

太叔繁
2023-03-14

我有一个框架布局,顶部为garvity的RecyclerView和底部为gravity的EditText。当我打开软键板时,布局超出状态栏。我希望键盘只推编辑文本,而不是整个布局。这是我的setupDialog方法:

public void setupDialog(Dialog dialog, int style) {
    super.setupDialog(dialog, style);

    dialog.setContentView(bottomSheetBinding.getRoot());

    dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);


    dialog.setOnShowListener(new DialogInterface.OnShowListener() {
        @Override
        public void onShow(DialogInterface dialog) {

            BottomSheetDialog d = (BottomSheetDialog) dialog;

            FrameLayout bottomSheet = (FrameLayout) d.findViewById(android.support.design.R.id.design_bottom_sheet);

            BottomSheetBehavior.from(bottomSheet)
                    .setState(BottomSheetBehavior.STATE_EXPANDED);
        }
    });
}

我尝试调整Pan和调整大小,但无法正常工作。

共有1个答案

公羊嘉
2023-03-14

您应该使用以下行:dialog.getWindow(). setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE|WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

 类似资料:
  • 更新:清单已添加 由于某种原因,状态栏没有显示深原色,但它在我的 Nexus 5 @ 5.1.1 Lollipop上是半透明的。在此处观看视频:http://sendvid.com/vo5b5a83 如您所见,当应用程序启动时,状态栏的颜色为红色,但是当它进入启动活动时,它会变回灰色,并且是半透明的。以下是代码: styles.xml activity_main.xml AndroidManife

  • 我想在键盘打开时隐藏屏幕上的标签栏。我已经尝试过更改AndroidManifest.XML文件。通过将更改为,当键盘打开时,屏幕标签栏会隐藏,但问题是我现在的文本输入与键盘重叠,我也尝试过KeyBoardAvidingView,但它不起作用,因为当更改XML文件时,它也会影响其他应用程序组件。所以告诉我如何在键盘打开时隐藏标签栏而不更改XML文件。

  • 我有三个编辑文本字段。在这些字段中,我想只显示第一个字段的软输入键盘,并禁用后面两个字段,即日期和时间字段。 通过使用下面的代码,我可以禁用字段2和字段3的键盘,但当用户关注字段1时,键盘会出现,但当用户点击字段2或字段3时,键盘不会隐藏。虽然当第一次点击字段2或3时,不会出现键盘。 如果软输入键盘已打开,如何隐藏它?

  • 见下面的图片。当我点击编辑文本时,我的整个布局被推到顶部。结果应该是工具栏 图像 1 图片2 我的布局如下所示: 这是我的清单。xml文件: 我尝试过已经尝试过“调整大小”,但问题是我在底部的线性布局隐藏在键盘下。 那么我该怎么做呢?

  • 我正在开发一款小型jetpack compose演示聊天应用程序。所以我需要在底部有一个带文本字段和发送按钮的栏,就像WhatsApp一样……我想最好使用带底部栏的脚手架。 现在的问题是,当键盘打开时,底部栏隐藏在键盘后面。有办法吗?

  • 在Android中有没有可能只在状态栏展开时才显示通知?我的意思是,只有当我拖动状态栏,我可以看到通知,否则它将被隐藏。如果有可能,我如何实施它?我只需要在最小视图中隐藏状态栏中的应用程序图标