如何防止我的snackbar文本在Android上被截断?

ari*_*nte 22 android android-snackbar

我正在显示一个带有相当长文本消息的快餐栏,并且在纵向模式下在手机上它看起来很好.

手机人像模式

但在平板电脑上它似乎只允许1行文本,因此它被省略

平板电脑风景模式

无论如何我可以把它变成平板电脑风景中的2行吗?

Mat*_*ski 25

您可以像这样引用SnackBar的TextView:

TextView tv = (TextView) view.findViewById(android.support.design.R.id.snackbar_text);
Run Code Online (Sandbox Code Playgroud)

然后通过更改其最大行来操作TextView本身:

tv.setMaxLines(3)
Run Code Online (Sandbox Code Playgroud)

  • 无法获取对SnackBar TextView的引用.我从那个语句中得到NULL. (3认同)
  • @zulkarnainshah看看我的回答-我澄清了那里的一切 (2认同)

Szy*_*ber 17

什么是重要的,而在其他答案中没有说明,你需要使用Snackbar的视图.

所以:

Snackbar snackbar = Snackbar.make(rootView, R.string.message, Snackbar.LENGTH_LONG);
View snackbarView = snackbar.getView();
TextView snackTextView = (TextView) snackbarView.findViewById(com.google.android.material.R.id.snackbar_text);

snackTextView.setMaxLines(2);
snackbar.show();
Run Code Online (Sandbox Code Playgroud)

注意:这也可能有助于屏幕密度较低的设备

  • 很好的简单答案,节省了我的时间。我已经用 AndroidX 依赖项更新了答案!干杯! :D (2认同)

sos*_*ite 14

根据Snackbar 源代码,您可以看到在宽度大于或等于 600 dp 的设备上,它们将 max lines 更改为1. 所以你也可以添加:

<integer name="design_snackbar_text_max_lines">3</integer>
Run Code Online (Sandbox Code Playgroud)

融入你的res\values\*.xml价值观