Когда я запускаю макет для определенного XML-файла, я получаю следующее:
This tag and its children can be replaced by one <TextView/>
and a compound drawable
Какие изменения нужно сделать для следующего xml-кода:
<LinearLayout android:id="@+id/name_layout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:background="@drawable/grouplist_single_left_grey_area" >
<ImageView android:id="@+id/photo_image"
android:layout_width="@dimen/thumbnail_width"
android:layout_height="@dimen/thumbnail_height"
android:paddingBottom="5dip"
android:paddingTop="5dip"
android:paddingRight="5dip"
android:paddingLeft="5dip"
android:layout_marginRight="5dip"
android:clickable="true"
android:focusable="true"
android:scaleType="fitCenter"
android:src="@*android:drawable/nopicture_thumbnail"
android:background="@drawable/photo_highlight" />
<TextView android:id="@+id/name"
android:paddingLeft="5dip"
android:layout_weight="1"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>
Вот как это выглядит на экране:
Значок камеры установлен по умолчанию. Щелчок по нему даст пользователю возможность выбрать другое изображение.
Ответы:
Чтобы расширить ответ Ромена Гая, вот пример.
Перед:
После:
источник
Объедините
TextView
иImageView
в один, используяsetCompoundDrawable*()
методы TextView или используяandroid:drawableLeft
.источник
setCompoundDrawable()
не позаботится о вашем рисовании как таковом, вы должны его вызватьsetBounds
(см. API ). Для его установки вы можете получить предыдущие границы с помощьюTextView.getCompoundDrawables()
, получив доступ к правильному отображаемому индексу и, наконец, вызвавgetBounds()
.Подумал, что я бы попытался получить для этого дополнительные пунто: вы можете добавить отступ между изображением и текстом, используя
android:drawablePadding
. https://stackoverflow.com/a/6671544/1224741источник
Иногда можно заменить
ImageView
(или несколько) иTextView
на одинTextView
с составными вытяжками. Существует НЕ много параметров, которые можно применить к составному рисунку с использованием собственного API и этой библиотеки TextViewRichDrawable , но если вы можете управлять одним TextView вместо использования LinearLayout, вы обязательно должны его использовать. .Список атрибутов и параметров, которые можно применять к составным чертежам:
Размер: ( ДА, правда ):
Даже установите векторный ресурс как доступный для рисования:
Заполнение Drawable с использованием собственного API
android:drawablePadding
-> ссылкаВот пример:
источник
LinearLayout
, Который содержитImageView
иTextView
может быть более эффективно обрабатываться как соединение Drawable (одинTextView
, используяdrawableTop
,drawableLeft
,drawableRight
и / илиdrawableBottom
атрибуты , чтобы сделать одно или несколько изображений , прилегающих к тексту).Если два виджета смещены друг относительно друга с полями, это можно заменить
drawablePadding
атрибутом.Для выполнения этого преобразования в подключаемом модуле Eclipse есть lint quickfix.
От: Официальные документы API Android!
источник
Добавить
tools:ignore="UseCompoundDrawables"
в<LinearLayout>
.источник
Когда я последовал приведенному выше коду, текст внутри TextView не установлен должным образом. Вам нужно установить его гравитацию в центр | начать, чтобы достичь того, что показано в заданном вопросе.
Текстовое представление выглядит так:
источник
Если вы не хотите изменять ImageView и TextView, вы можете изменить версию в AndroidManifest.xml как:
Если ваша версия - android: targetSdkVersion = "17", измените ее на "18".
Надеюсь, это исправит. Я сделал это и понял
источник
Другой подход - встроить ViewImage в другой LinearLayout (разрешить обрабатывать его только с идентификатором):
источник
источник