私はかなり長いテキストメッセージでスナックバーを表示しています、そしてポートレートモードの電話ではそれはうまく見えます。
しかし、タブレットでは1行のテキストしか許可されていないようであるため、省略記号が使用されます
とにかく、タブレットランドスケープで2行にすることはできますか?
SnackBarのTextViewは次のように参照できます。
TextView tv = (TextView) view.findViewById(Android.support.design.R.id.snackbar_text);
次に、最大行数を変更して、TextView自体を操作します。
tv.setMaxLines(3)
重要で他の回答に記載されていないのは、スナックバーのビューを使用する必要があるということです。
そう:
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();
注:これは、画面密度が低いデバイスでも役立つ場合があります。
PS AndroidX(推奨)を使用しておらず、引き続きレガシーサポートライブラリを使用している場合は、Android.support.design.R.id.snackbar_text
の代わりにcom.google.Android.material.R.id.snackbar_text
を使用してください。 Snackbarの内部TextViewを取得するため。
コンテキストを使用したより精巧で徹底的な例は次のとおりです。
// 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 !