我正在使用28.0.0版支持库中的Material Design组件。
我想显示一个快餐栏,当操作按钮内的文本太长时,它会显示在与快餐栏消息不同的行中。
在遵循这些组件的材料设计文档之后,似乎可以使用如下所示的默认小吃栏:
https://material.io/design/components/snackbars.html#implementation
但是使用此代码:
var snackbar:Snackbar = Snackbar.make(root, message, Snackbar.LENGTH_SHORT)
snackbar.setAction(action, View.OnClickListener { })
snackbar.show()
如果操作文本很长,则不会移到下一行。
根布局是CoordinatorLayout。
因此,我不知道小吃店要使它正常工作所缺少的东西。
谢谢!
答案 0 :(得分:1)
如果您回答了THIS问题,则可以为操作按钮(实际上是textview)执行以下代码:
var snackbar:Snackbar = Snackbar.make(root, message, Snackbar.LENGTH_SHORT)
val snackbarView = snackbar.view
val tv = snackbarView.findViewById<TextView>(android.support.design.R.id.snackbar_action)
tv.maxLines = 2
snackbar.show()
答案 1 :(得分:1)
问题实际上是android本身的问题,从默认android dimen文件加载的属性已损坏,因此用于计算快餐栏元素方向的必需属性从未设置为正确的值。该问题已得到通知,解决方案将很快推送到源代码。
解决方法:直接在主主题中设置属性maxActionInlineWidth,然后您可以从@ dimen / design_snackbar_action_inline_max_width中获取值,这是android应该使用的值。
示例:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="maxActionInlineWidth">@dimen/design_snackbar_action_inline_max_width</item>
</style>