如果文本很长,如何使 snackbar 操作按钮显示在不同的行中?
How to make that the snackbar action button be shown in a different line if the text is long?
我正在使用支持库版本 28.0.0 中的 Material 设计组件。
我想显示一个快餐栏,当操作按钮内的文本太长时,它会显示在与快餐栏消息不同的行中。
根据这些组件的 Material 设计文档,似乎可以使用此处所示的默认快餐栏:
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。
所以我不知道我在小吃店里缺少什么来让它工作。
谢谢!
如果您仔细阅读了 问题的答案,您可以为操作按钮(实际上是文本视图)执行如下代码:
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()
问题实际上是 android 本身的问题,从默认 android dimen 文件加载的属性已损坏,因此用于计算元素方向的必需属性snackbar 永远不会设置为正确的值。问题已告知,解决方案会尽快推送到源码
解决方法:直接在您的主主题中设置属性 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>
我正在使用支持库版本 28.0.0 中的 Material 设计组件。
我想显示一个快餐栏,当操作按钮内的文本太长时,它会显示在与快餐栏消息不同的行中。
根据这些组件的 Material 设计文档,似乎可以使用此处所示的默认快餐栏:
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。
所以我不知道我在小吃店里缺少什么来让它工作。
谢谢!
如果您仔细阅读了
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()
问题实际上是 android 本身的问题,从默认 android dimen 文件加载的属性已损坏,因此用于计算元素方向的必需属性snackbar 永远不会设置为正确的值。问题已告知,解决方案会尽快推送到源码
解决方法:直接在您的主主题中设置属性 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>