#android #alignment #toast #android-context
#Android #выравнивание #toast #android-контекст
Вопрос:
Я использую Toast.makeText для отображения результатов из диалоговых окон и сталкиваюсь с немного странной проблемой: текст отображается над фреймом, который должен его содержать, вот так:
Сообщение смещено с рамкой. Пожалуйста, выровняйте его лучше. [_________________________________________________]
Обычно я использую код, похожий на
Toast bread = Toast.makeText(getContext(), R.string.message, Toast.LENGTH_LONG);
bread.show();
из диалогового окна. Я слышал, что плохой контекст иногда может вызывать проблемы с инфляцией, но getOwnerActivity()
возвращает значение null, так что это исключено. В любом случае, я бы подумал, что getContext() предоставит контекст, переданный во время построения, что в любом случае является действием.
Есть предложения?
Комментарии:
1. Попробуйте изменить getContext() с помощью getApplicationContext() …
Ответ №1:
вы можете попробовать это:
Toast bread = Toast.makeText(getApplicationContext(), R.string.message, Toast.LENGTH_LONG);
bread.show();
Комментарии:
1. Недоступен из класса Dialog, но будет
getContext().getApplicationContext()
работать?2. Это было написано как комментарий к вопросу, прежде чем вы опубликуете этот ответ
3. @CrimsonChin Извините, я бы сразу отметил это, но это заставляет вас ждать десять минут, и я забыл.
Ответ №2:
bread.setGravity(5,5,5);
попробуйте поиграть, изменяя эти значения, пока не получите точное местоположение.
Но использование Gravity.CENTER
и других констант является предпочтительным способом..
Ответ №3:
Если вы создаете toast изнутри действия, вы должны использовать: this
или MyActivityName.this
в качестве параметра контекста.
Ответ №4:
Попробуйте использовать,
<supports-screens
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:anyDensity="true" />
в вашем файле манифеста.