android toast 消息是否被强制发送到 wrap_content layout_width?

are android toast messages forced to wrap_content layout_width?

我正在创建一个与 android.widget.Toast.setView() 一起使用的自定义视图,但无论我如何调整视图的大小,所有内容似乎都是使用 "wrap_content" 作为布局宽度设置进行布局的。

例如,无论我是将视图的根布局(在我的例子中是 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 中的源代码。如果我手边有代码,我会这样做。

我在我的应用程序中这样做,它适用于定义的宽度。

<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 的宽度,它适用于我。试试这个。