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 的大小的主要内容,如果未能解决你的问题,请参考以下文章