2017-01-31 18 views
0

Я создаю пользовательский вид для использования с android.widget.Toast.setView(), но независимо от того, как я изменяю представление, все, кажется, выложено с использованием параметра «wrap_content» в качестве настройки ширины макета.являются сообщениями для тостов в android, которые были вынуждены wrap_content layout_width?

Например, установлен ли размер корневого макета представления (LinearLayout в моем случае) до «match_parent» или задан статический размер, такой как «500dp». Я получаю тот же результат во время выполнения ... тост просто обертывает содержание.

Мой макет XML является:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/toast_container" 
    android:orientation="horizontal" 
    android:layout_width="500dp" 
    android:layout_height="wrap_content" 
    android:padding="16dp" 
    android:background="@drawable/toast_bg"> 
    <ImageView 
     android:id="@+id/toastIcon" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginEnd="16dp" 
     android:src="@drawable/toast_icon" /> 
    <TextView 
     android:id="@+id/toastMsg" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="sample toast message"/> 
</LinearLayout> 

Я подозреваю, что Android (я бегу в API платформы 19 Kit-Kat) заставляет взгляды тоста быть "wrap_content. Это так?

Я уверен, что кто-то предложит мне посмотреть исходный код в AOSP. Если бы у меня был удобный код, я бы сделал это.

ответ

0

Я делаю это в своем приложении, и это работает для определенной ширины.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 

android:id="@+id/toast_container" 
android:orientation="horizontal" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:padding="16dp" 
> 

<RelativeLayout 
    android:layout_width="800dp" 
    android:layout_height="wrap_content" 
    android:background="@drawable/toast_bg"> 
<ImageView 
    android:id="@+id/toastIcon" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginEnd="16dp" 
    android:src="@drawable/toast_icon" /> 
<TextView 
    android:id="@+id/toastMsg" 
    android:layout_toRightOf="@+id/toastIcon" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="sample toast message"/> 
</RelativeLayout> 

я установил ширину RelativeLayout, и это работает для меня. Попробуй это.

+0

Действительно, добавление дополнительного вложенного RelativeLayout устраняет проблему. Кажется странным и чрезмерным, что он работает таким образом, но это так. – alpartis

+0

Интересно, будет ли работать какой-либо вложенный макет, или для этого требуется вложенный RelativeLayout? – alpartis

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

  • Нет связанных вопросов^_^