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

时间:2015-08-26 13:40:48

标签: android android-snackbar

我正在显示一条带有相当长文字信息的小吃吧,而在手机上以纵向模式显示它看起来不错。

Phone Portrait mode

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

Tablet Landscape mode

无论如何,我可以让它在平板电脑风景中成为2行吗?

4 个答案:

答案 0 :(得分:24)

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

TextView tv = (TextView) view.findViewById(android.support.design.R.id.snackbar_text);

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

tv.setMaxLines(3)

答案 1 :(得分:14)

重要的是,在其他答案中没有说明,您需要使用 Snackbar的视图

所以:

Snackbar snackbar = Snackbar.make(rootView, R.string.message, Snackbar.LENGTH_LONG);
View snackbarView = snackbar.getView();
TextView snackTextView = (TextView) snackbarView
.findViewById(android.support.design.R.id.snackbar_text);
snackTextView.setMaxLines(2);
snackbar.show();

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

答案 2 :(得分:3)

上下文中有一个更精细,更全面的例子:

// Create on click listener
final  OnClickListener positiveButtonClickListener = new OnClickListener()
{
  @Override
  public void onClick(View v)
  {
    // Do your action - e.g. call GooglePlay  to update app
    openGooglePlayAppUpdate();
  }
};

// Create snack bar instance
Snackbar sBar = Snackbar.make(findViewById(R.id.some_view_to_bind),  // You bind here e.g. layout, or form view
                              R.string.snack_bar_message,
                              Snackbar.LENGTH_INDEFINITE)
                        // Set text and action to the snack bar
                        .setAction(android.R.string.ok, positiveButtonClickListener);

// Now get text view of your snack bar ...
TextView snckBarTv = (TextView) offerUpdate.getView().findViewById(android.support.design.R.id.snackbar_text);
snckBarTv.setMaxLines(5); // ... and set max lines
sBar.show(); // and finally display snack bar !

答案 3 :(得分:1)

基于Snackbar source code,您可以看到在宽度大于或等于600 dp的设备上,它们将最大行数更改为getter。因此,您还可以添加:

1

输入您的<integer name="design_snackbar_text_max_lines">3</integer>