Почему текст Snackbar исчезает, если текст слишком длинный?

1

У меня есть требование добавить некоторые отзывы пользователей, используя стандартную Snackbar в Android.

Я заметил, что если мой текст слишком длинный, тогда вся текстовая строка исчезает. Вместо того, чтобы иметь эллипсы...

Более конкретно; в эмуляторе Pixel 2 исчезает следующая строка:

"Вы не в сети. Проверьте соединение и попробуйте снова". - это ушло

но если я удаляю последний символ, то он показывает:

"Вы находитесь в автономном режиме. Проверьте подключение и попробуйте снова" - это показывает

Еще хуже то, что на устройстве с меньшим экраном длина отображаемого текста уменьшается, например, на эмуляторе Nexus 5:

"Вы не в сети. Проверьте соединение и попробуйте снова" - теперь это не отображается

но если я укороту его дальше:

"Вы находитесь в автономном режиме. Проверьте подключение" - это показывает

Это похоже на ошибку для меня.

Я понимаю, что Snackbar должен быть для очень короткого текста, но тем не менее он не должен произвольно удалять текст. Это должно по крайней мере показать некоторый текст или эллипсы или стать многострочным.

Кто-нибудь еще заметил это или может подсказать, если это ошибка или я что-то упустил?

Пример кода:

Snackbar.make(findViewById(R.id.placeSnackBar),
        "You're offline. Check your connection and try again.",
        Snackbar.LENGTH_INDEFINITE)
        .setAction("X", View.OnClickListener { }).show()

Я также попробовал:

val sb = Snackbar.make(this, message, Snackbar.LENGTH_INDEFINITE)
        .setActionTextColor(Color.parseColor("#666666"))
        .setAction("X", View.OnClickListener { })

sb.view.setBackgroundColor(Color.WHITE)
sb.view.findViewById<TextView>(android.support.design.R.id.snackbar_text)
        //.setTextColor(Color.parseColor("#F44336"))
        .setTextColor(Color.parseColor("#000000"))
sb.view.findViewById<TextView>(android.support.design.R.id.snackbar_text)
        .singleLine = false
sb.view.findViewById<TextView>(android.support.design.R.id.snackbar_text)
        .maxLines = 2
sb.show()

XML для разметки Coordinator, которая показывает снэк-бар над плавающей разметкой нижнего колонтитула

<RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <android.support.design.widget.CoordinatorLayout
            android:id="@+id/message_bar_container"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:layout_above="@+id/llFooter" />

        <LinearLayout
            android:id="@+id/llFooter"
            android:layout_width="match_parent"
            android:layout_height="80dp"
            android:layout_alignParentBottom="true"
            android:background="@drawable/footer_background"
            android:orientation="horizontal"
            android:paddingStart="20dp"
            android:paddingEnd="20dp">

            <TextView
                android:id="@+id/login_forgot_password"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_weight="1"
 ...
 />

            <Button
                android:id="@+id/btn_login"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
...
   />

        </LinearLayout>

    </RelativeLayout>

Как это выглядит с полной строкой:

Изображение 174551

и если я укорачиваю строку на 1 символ:

Изображение 174551

Теги:
material-ui
material-design
snackbar

1 ответ

0

Установите линии TextView на 2, открыв его TextView:

val message = "You're offline. Check your connection and try again.";
val sb = Snackbar.make(
    findViewById(R.id.newLinearLayout),
    "You're offline. Check your connection and try again.",
    Snackbar.LENGTH_INDEFINITE)
    .setAction("X") {}
val view = sb.view
val textView = view.findViewById<View>(android.support.design.R.id.snackbar_text) as TextView
textView.maxLines = 2
sb.show()
  • 0
    Я попробовал это, а также singleLine = false и без радости :-(
  • 0
    @ Павел, ты, должно быть, делаешь что-то не так, потому что это работает как положено Но проверьте это: даже если вы не видите текста, вам кажется, что его высота достаточно велика, чтобы вместить 2 строки?
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню