Подтвердить что ты не робот

Android Snackbar TextAlignment в центре

введите описание изображения здесь

Как изменить выравнивание текста Snackbar в центре? bellow code не работает

Snackbar snack = Snackbar.make(findViewById(android.R.id.content), intent.getStringExtra(KEY_ERROR_MESSAGE), Snackbar.LENGTH_LONG);
View view = snack.getView();
TextView tv = (TextView) view.findViewById(android.support.design.R.id.snackbar_text);
tv.setTextColor(ContextCompat.getColor(LoginActivity.this, R.color.red_EC1C24));
tv.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
snack.show();
4b9b3361

Ответ 1

tv.setGravity(Gravity.CENTER_HORIZONTAL);

ИЗМЕНИТЬ

Внешний вид Snackbar был изменен в библиотеке Support v23, поэтому правильный ответ:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
    tv.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
} else {
    tv.setGravity(Gravity.CENTER_HORIZONTAL);
}

Ответ 2

Попробуйте следующее:

// make snackbar
Snackbar mSnackbar = Snackbar.make(view, R.string.intro_snackbar, Snackbar.LENGTH_LONG);
// get snackbar view
View mView = mSnackbar.getView();
// get textview inside snackbar view
TextView mTextView = (TextView) mView.findViewById(android.support.design.R.id.snackbar_text);
// set text to center
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1)
    mTextView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
else
    mTextView.setGravity(Gravity.CENTER_HORIZONTAL);
// show the snackbar
mSnackbar.show();

Ответ 3

Код ниже делает трюк для меня:

TextView tv = (TextView) view.findViewById(android.support.design.R.id.snackbar_text);
if(tv!=null) {
   if (Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN)
       tv.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);

   tv.setGravity(Gravity.CENTER_HORIZONTAL);
}

Ответ 4

Вышеупомянутое условное setTextAlignment() OR setGravity() не работает для меня в API 26.

Для пуленепробиваемого центрированного текста:

  1. Всегда применяйте setGravity()
  2. Применить setTextAlignment() для API> = 17

Код:

...

sbTextView.setGravity(Gravity.CENTER_HORIZONTAL);

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
    sbTextView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
}

...

Ответ 5

Попробуйте выполнить следующий код, который он использует для набора текста закуски в центре:

    Snackbar snackbar = Snackbar.make(main_layout, "This is snack", Snackbar.LENGTH_LONG);
    View snackbarView = snackbar.getView();
    Snackbar.SnackbarLayout layout = (Snackbar.SnackbarLayout) snackbar.getView();
    layout.setGravity(Gravity.CENTER);
    TextView mTextView = (TextView) snackbarView.findViewById(android.support.design.R.id.snackbar_text);
    mTextView.setGravity(Gravity.CENTER_HORIZONTAL);
    mTextView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
    snackbar.show();