Android:当 Appcompat 底部工作表显示时调整 EditText 的大小

Posted

技术标签:

【中文标题】Android:当 Appcompat 底部工作表显示时调整 EditText 的大小【英文标题】:Android: Resize EditText when Appcomat bottomsheet shows 【发布时间】:2016-08-14 14:28:56 【问题描述】:

我有一个多行 EditText 和一个按钮,该按钮会弹出一个持久的底部工作表(模式不会在这里做)。

bottomsheet基本上是一个LinearLayout,变成了appcompat bottomsheet,用

app:layout_behavior="@string/bottom_sheet_behavior"

在 XML 中。

按下按钮会这样显示:

 View bottomSheet = context.findViewById(R.id._bottom_sheet);

 BottomSheetBehavior behavior = BottomSheetBehavior.from(bottomSheet);

 behavior.setState(BottomSheetBehavior.STATE_EXPANDED);

现在,我知道这是预期的行为,底部表涵盖了那里的任何内容(我不想使其成为模态,因为 EditText 需要保持其焦点和选择等),但我的问题是:

有没有办法让底部视图调整 EditText 的大小,以便始终显示“整体”?就像显示键盘时一样。

已编辑:原始问题允许平移,这将隐藏视图的顶部)

或者我最好将其转换为“常规”视图,并通过单击按钮使其“出现”?

感谢您的洞察力。

编辑:我还需要提一下,Bottomsheet 是在主要活动上定义的,而 EditText 是在片段中的 ViewPager 上(这使得调整大小变得不那么简单)

【问题讨论】:

将 BottomSheetCallback 设置为 bottomSheet。当带有浮动参数的工作表滑动时,您将收到回调。然后根据幻灯片值翻译您的视图。 @mvai 谢谢,这是一个很好的开始,现在我可以弄清楚到底覆盖了多少视图。这也让我意识到我的问题是错误的,平移只会推动事情,我真的需要调整它的大小。仍然不确定如何。 setLayoutparams 可能是一个解决方案... 是的,改变布局参数来改变高度。 @mvai 一直在摆弄它,发现我正在处理错误的资源。 :) 不管我想在 ViewPager 上调整什么大小,真正改变的是 ViewPager 的大小...... 【参考方案1】:

原来问题并不是真正的问题,而是解决问题的错误方法。有问题的EditText 本身被放置在ViewPager 上。调整Viewpager 本身的大小调整了其中的所有内容,并正确调整了EditText 的大小。

感谢 m vai 在上面的评论将我引导至此解决方案。

【讨论】:

以上是关于Android:当 Appcompat 底部工作表显示时调整 EditText 的大小的主要内容,如果未能解决你的问题,请参考以下文章

Android 底部工作表布局边距

在android应用程序中扩展底部工作表对话框

如何在android的底部工作表对话框中隐藏软键

Android 底部工作表模式(对话框)未完全打开

底部页边距顶部无法正常工作 - Android

如何在android的底部工作表顶部制作图像