2012-07-16 40 views
1

我想開發一個可以同時用作ImageView和TextView的視圖。通常可以通過擴展這兩個類來實現,但Java不支持多重繼承。設計TextView和ImageView的視圖組合

然後有可能做到這一點嗎?如何 ?

+1

爲什麼你想要?僅供參考,您可以通過擴展視圖來設計自定義視圖。 – 2012-07-16 06:59:07

+0

爲什麼不簡單地爲您的TextView設置背景並在需要時將文本設置爲它? – 2012-07-16 07:00:55

+0

但我需要ImageView和TextView的所有功能以單個視圖 – surendra 2012-07-16 07:01:40

回答

0

爲此,您可以通過擴展View類來創建自定義ViewHere是創建自定義按鈕View的示例。這不是你正在尋找的,因爲它展示了一個自定義Button,但我相信它會讓你開始。

1

TextView具有參數「DrawableTop/Left/Right」。

2

我知道我發佈這個很晚,你可能已經修復了這個問題!仍然想到分享工作。

我有一個類似的要求,並認識到GridView不是最適合這個。我通過使用TableLayout並將TableRows的元素定義爲ImageView或TextView來實現此目的。如果你有一個靜態的UI結構,這可以作爲你的解決方法,這意味着你知道哪個表索引應該包含哪個元素。希望這可以幫助某人。

<TableLayout 
    android:id="@+id/tableLayout3" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:shrinkColumns="*" 
    android:stretchColumns="*" 
    android:layout_below="@+id/tagGrid"> 

    <TableRow 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 

     <TextView 
      android:layout_height="@dimen/activity_vertical_margin" 
      android:layout_width="@dimen/activity_horizontal_margin"/> 

     <ImageView 
      android:layout_height="@dimen/activity_vertical_margin" 
      android:layout_width="@dimen/activity_horizontal_margin" 
      android:src="@drawable/orange"/> 

     <ImageView 
      android:layout_height="@dimen/activity_vertical_margin" 
      android:layout_width="@dimen/activity_horizontal_margin" 
      android:src="@drawable/blue"/> 

     <ImageView 
      android:layout_height="@dimen/activity_vertical_margin" 
      android:layout_width="@dimen/activity_horizontal_margin" 
      android:src="@drawable/yellow"/> 

     <ImageView 
      android:layout_height="@dimen/activity_vertical_margin" 
      android:layout_width="@dimen/activity_horizontal_margin" 
      android:src="@drawable/milkman"/> 

    </TableRow> 

    <TableRow 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 

     <ImageView 
      android:layout_height="@dimen/activity_vertical_margin" 
      android:layout_width="@dimen/activity_horizontal_margin" 
      android:src="@drawable/check"/> 

      <TextView 
       android:id="@+id/tv1" 
       android:layout_height="@dimen/activity_vertical_margin" 
       android:layout_width="@dimen/activity_horizontal_margin" 
       android:text="10.4" 
       android:gravity="center" /> 
      <TextView 
       android:id="@+id/tv2" 
       android:layout_height="@dimen/activity_vertical_margin" 
       android:layout_width="@dimen/activity_horizontal_margin" 
       android:text="10.4" 
       android:gravity="center" /> 
      <TextView 
       android:id="@+id/tv3" 
       android:layout_height="@dimen/activity_vertical_margin" 
       android:layout_width="@dimen/activity_horizontal_margin" 
       android:text="10.4" 
       android:gravity="center" /> 
      <TextView 
       android:id="@+id/tv4" 
       android:layout_height="@dimen/activity_vertical_margin" 
       android:layout_width="@dimen/activity_horizontal_margin" 
       android:text="10.4" 
       android:gravity="center" /> 

    </TableRow> 

    <TableRow 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 

     <ImageView 
      android:layout_height="@dimen/activity_vertical_margin" 
      android:layout_width="@dimen/activity_horizontal_margin" 
      android:src="@drawable/cross"/> 

     <TextView 
      android:id="@+id/tv5" 
      android:layout_height="@dimen/activity_vertical_margin" 
      android:layout_width="@dimen/activity_horizontal_margin" 
      android:text="10.4" 
      android:gravity="center" /> 

     <TextView 
      android:id="@+id/tv6" 
      android:layout_height="@dimen/activity_vertical_margin" 
      android:layout_width="@dimen/activity_horizontal_margin" 
      android:text="10.4" 
      android:gravity="center" /> 

     <TextView 
      android:id="@+id/tv7" 
      android:layout_height="@dimen/activity_vertical_margin" 
      android:layout_width="@dimen/activity_horizontal_margin" 
      android:text="10.4" 
      android:gravity="center" /> 

     <TextView 
      android:id="@+id/tv8" 
      android:layout_height="@dimen/activity_vertical_margin" 
      android:layout_width="@dimen/activity_horizontal_margin" 
      android:text="10.4" 
      android:gravity="center" /> 

    </TableRow> 

</TableLayout>