Я хочу разработать представление, которое может работать как с ImageView, так и с TextView. В целом его можно расширить, расширив оба класса, но Java не поддерживает множественное наследование.
Тогда можно ли это сделать? и как?
Я знаю, что я отправляю это очень поздно, и вы, возможно, исправили проблему тоже! Все еще думал о совместной работе.
У меня было аналогичное требование, и я понял, что GridView не подходит для этого. Я реализовал это, используя TableLayout и определяя элементы TableRows как ImageView или TextView. Это может служить обходным путем для вас, если у вас есть статическая структура пользовательского интерфейса, то есть вы знаете, какой индекс таблицы должен содержать какой элемент. Надеюсь, это поможет кому-то.
<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>
TextView имеет параметр "DrawableTop/Left/Right".
Для этого вы можете создать пользовательский View
, расширив класс View
. Ниже приведен пример создания пользовательской кнопки " View
. Это не совсем то, что вы ищете, поскольку оно показывает пользовательскую Button
, но я верю, что вы ее начнете.