1

Android のトーストに画像を表示したい。私のlayout.xmlでは、次のように、textviewとtablelayoutを含むLinearLayout 'svllid'を定義しました。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#CCCCCC"
    android:weightSum="1" android:id="@+id/llid">
    <EditText  
        android:id="@+id/cpuText"  
        android:hint="Enter cpu" 
        android:layout_height="wrap_content"   
        android:layout_width="fill_parent">  
    </EditText>
    <EditText  
        android:id="@+id/ramText"  
        android:hint="Enter ram" 
        android:layout_height="wrap_content"    
        android:layout_width="fill_parent">  
    </EditText> 
    <EditText  
        android:id="@+id/bandwidthText"  
        android:hint="Enter bandwidth" 
        android:layout_height="wrap_content"    
        android:layout_width="fill_parent">  
    </EditText> 
    <Button  
        android:id="@+id/imageRequestButton"  
        android:layout_height="wrap_content"  
        android:text="Download"   
        android:layout_width="fill_parent" android:onClick="sendImageRequest">  
    </Button>       
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="#00FF00"
        android:weightSum="1" android:id="@+id/svllid">
        <TextView android:text="client profile"
            android:id="@+id/profileName"
            android:layout_width="fill_parent"
            android:textStyle="bold"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal"
            android:background="#000000">
        </TextView> 
        <TableLayout
            android:paddingBottom="3pt"  
            android:background="#0000FF"
            android:layout_width="fill_parent" 
            xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="wrap_content">
            <TableRow>
                <TextView
                    android:paddingLeft="3pt" 
                    android:paddingTop="3pt" 
                    android:text="Image Name"
                    android:layout_width="150px"
                    android:layout_height="wrap_content" 
                    android:textColor="#FFFFFF"/>
                <TextView
                    android:paddingLeft="3pt" 
                    android:text="blah.png"
                    android:textColor="#FFFFFF"
                    android:layout_width="315px"
                    android:layout_height="wrap_content" android:id="@+id/imageName"/>          
            </TableRow>
            <TableRow>
                <TextView
                    android:paddingLeft="3pt" 
                    android:text="Size"
                    android:layout_width="150px"
                    android:layout_height="wrap_content" 
                    android:textColor="#FFFFFF"/>
                <TextView
                    android:paddingLeft="3pt" 
                    android:text="155kb"
                    android:textColor="#FFFFFF"
                    android:layout_width="300px"
                    android:layout_height="wrap_content" android:id="@+id/imageSize"/>          
            </TableRow> 
            <TableRow>
                <TextView
                    android:paddingLeft="3pt" 
                    android:text="Dimensions"
                    android:layout_width="150px"
                    android:layout_height="wrap_content" 
                    android:textColor="#FFFFFF"/>
                <TextView
                    android:paddingLeft="3pt" 
                    android:text="250 X 150px"
                    android:textColor="#FFFFFF"
                    android:layout_width="300px"
                    android:layout_height="wrap_content" android:id="@+id/imageDimension"/>         
            </TableRow>                         
        </TableLayout>                                          
    </LinearLayout>
</LinearLayout>

トーストに ID 'svllid' の LinearLayoutを表示し、アクティビティ コードからトーストを表示したいと考えています。

さて、実際のAndroidコードでは、最初に呼び出します

setContentView(R.layout.main); 

続いて、石鹸メッセージから画像を読み取りました。次に、ImageView を作成し、それを LinearLayout の 'svllid' に挿入して、その LinearLayout を Android トーストに表示します。

                Toast imageToast = new Toast(this);
                LinearLayout toastLayout = (LinearLayout) findViewById(R.id.svllid);
                toastLayout.addView(image,1);
                imageToast.setView(toastLayout);
                imageToast.setDuration(Toast.LENGTH_LONG);
                imageToast.show();

ただし、うまくいきません。アプリケーションが次のエラーでクラッシュします。

java.lang.IllegalArgumentException: View not attached to window manager

理由はありますか?

4

2 に答える 2

1

ルート レイアウトには特定の ID を使用する必要があると思います。「toast_layout」または「toast_layout_root」という名前を付ける必要があります(どちらを使用する必要があるかわかりません-ドキュメントは少しあいまいです。両方を試してください)。

そして、Varun が言ったように、レイアウトを独自のレイアウト ファイルに入れる必要があります。

Android Docを読んで、与えられた例に従ってください。

于 2011-08-03T17:50:40.920 に答える