2011-08-03 42 views
1

我想在Android中的Toast中顯示圖像。在我layout.xml,我已經定義了一個的LinearLayout 'svllid',包含一個TextView和tablelayout,像這樣:無法在烤麪包中顯示圖像

<?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> 

我想顯示的LinearLayout與ID 在 'svllid'敬酒並從我的活動代碼中顯示敬酒。

現在,在實際機器人代碼,我首先請

setContentView(R.layout.main); 

隨後,我從SOAP消息讀取圖像。然後我創建一個ImageView,並且我想將它插入到LinearLayout'svllid'中,並在Android Toast中顯示LinearLayout。

   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 

任何想法爲什麼?

+1

我想你不能這樣做。你的svllid已經在活動中了。你不能再把它添加到敬酒。可能是你需要編程創建一個新的視圖或'膨脹'另一個佈局,然後''setView()'爲敬酒。 – Varun

+0

那麼我應該將'svllid'從main.xml中取出並以編程方式創建它? – Joeblackdev

+1

是的。保持在一個單獨的XML。使用'LayoutInflator'膨脹新的xml,然後將其設置爲吐司。或者以編程方式創建它並將其設置爲祝詞。 – Varun

回答

1

我相信你必須使用特定的ID作爲根佈局。您必須將其命名爲「toast_layout」或「toast_layout_root」(不確定哪一個必須被使用 - 文檔在那裏稍微有些模糊,請同時嘗試)。

而且Varun說你需要把佈局放在它自己的佈局文件中。

閱讀Android Doc's and follow the given example.

+0

完美,謝謝你 – Joeblackdev

-1

爲此,您可以使用自定義吐司顯示圖像。

參照This

+0

使用自定義麪包,你可以顯示圖像。 –