首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >显示键盘时的BottomSheetDialogFragment行为

显示键盘时的BottomSheetDialogFragment行为
EN

Stack Overflow用户
提问于 2020-06-04 12:56:35
回答 1查看 675关注 0票数 0

我使用的是一个BottomSheetDialogFragment,它包含:-一个包含用户评论列表的RecyclerView --一个位于底部的EditText,用户可以在这里写一个新的评论并发布它。

当用户点击EditText时,键盘会从底部显示出来。我想要的是键盘只按EditText,这样用户就可以看到他正在输入什么,而不是按下整个BottomSheetDialogFragment。

例如,你可以在Facebook应用程序中看到令人向往的行为。

我尝试过为setSoftInputMode设置不同的值,但我所能做的就是要么移动整个BottomSheetDialogFragment,要么什么也不动(保留EditText )。

EN

回答 1

Stack Overflow用户

发布于 2020-06-04 13:25:12

最简单的方法是不使用BottomSheetDialogFragment,而是使用覆盖整个窗口或活动的常规片段。片段或活动;只要你占据了整个屏幕,任何你喜欢的都不重要。

当屏幕上的键盘出现时,活动窗口(默认情况下)调整大小,为屏幕上的键盘让路.

由于BottomSheetDialogFragment将其重力设置为bottom,因此当活动窗口调整大小时,它会将底部页和所有内容向上推。

下面是一个最简单的布局的例子,它可以实现您想要的

代码语言:javascript
运行
复制
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <View
        android:layout_width="match_parent"
        android:layout_height="80dp"
        android:background="#80000000" />

    <androidx.recyclerview.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="vertical" />

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>

首先是一个具有恒定高度的视图,它模仿对话框外部的黑暗区域。无论窗口如何调整大小,这将始终是80dp

第二个是RecyclerView,它根据LinearLayout拥有的剩余可用空间调整大小。注意属性android:layout_weight

第三是EditText,它具有恒定的wrap_content高度。同样,无论窗口如何调整大小,这将始终是相同的高度。由于RecyclerView将占用尽可能多的空间,这个EditText将保留在屏幕的底部。

一旦窗口由于屏幕上键盘的出现而调整大小,LinearLayout将调整大小并重新计算它的子级大小。由于视图和EditText有一个恒定的高度,它将不得不使RecyclerView变小,使其看起来像是EditText向上移动。

您不必使用LinearLayout来完成此操作,您可以与任何其他布局实现相同的效果。这里的关键是使用一个占据整个屏幕的布局。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62195160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档