2014-02-12 2 views
10

Я просто звонок из моих Activity:Простые Android тостов не выравнивая правильно

Toast.makeText(this, "This is a toast", Toast.LENGTH_SHORT).show() 

Но результат текст выравнивается по верхней части контейнера тоста, а не по центру внутри, он должен:

enter image description here

Любые идеи о том, что может быть неправильным?

+2

Вы испытываете его по телефону? Какой Android это? –

+0

Nexus 4 running Stock Android 4.4 –

+1

Кажется, что в вашей системе есть ошибка. Невозможно изменить силу тяжести Тоста. Можете ли вы опубликовать код своей деятельности? Тестировали ли вы какие-либо другие устройства? –

ответ

23

Мне удалось это исправить. Проблема заключается в применении атрибута android:fitsSystemWindows к теме активности. Я нашел this answer, что объясняет, почему это не должно быть сделано:

Атрибут android:fitsSystemWindows предназначен для использования на мнения в макет XML, а не в темах.

Что вы видите, так это то, как работает стильный атрибут в Android. Если атрибут не указан в элементе представления или в явном стиле, заданном для представления, то в фреймворке проверяется, был ли этот атрибут указан по самой теме . Если он найден там, это значение используется. Так как просмотры, используемые тостами, используют тему вашей деятельности, значение по умолчанию false переопределено, и вы видите это поведение.

Вы не просто изменения fitsSystemWindows по умолчанию для ваших взглядов верхнего уровня, указав его в теме, вы перекрывая его для всех взглядов с той темой, которая является не то, что вы хотите. Вы должны указать только fitsSystemWindows в представлениях в ваших макетах или в моделях , которые вы явно применяете к представлениям в своих макетах, а не по темам .

Просто примените атрибут к самому верхнему ViewGroup действия (или стиль) вместо его темы, и тост будет отформатирован правильно.

Смежные вопросы