Quando executo o layout em um arquivo XML específico, obtenho o seguinte:
This tag and its children can be replaced by one <TextView/>
and a compound drawable
Que mudança deve ser feita para o seguinte código 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>
É assim que aparece na tela:
O ícone da câmera é o padrão. Clicar nele dará ao usuário a opção de escolher outra imagem.
Respostas:
Para expandir a resposta de Romain Guy, aqui está um exemplo.
Antes:
Depois de:
fonte
Mesclar o
TextView
e oImageView
em um, usando ossetCompoundDrawable*()
métodos de TextView ou usandoandroid:drawableLeft
.fonte
setCompoundDrawable()
não cuidará de seu drawable como está, você deve chamásetBounds
-lo (veja API ). Para configurá-lo, você pode obter os limites anteriores usando oTextView.getCompoundDrawables()
, acessando o índice de drawable correto e finalmente chamandogetBounds()
.Pensei em tentar obter alguns pontos extras para isso também: você pode adicionar preenchimento entre a imagem e o texto usando
android:drawablePadding
. https://stackoverflow.com/a/6671544/1224741fonte
Às vezes é possível substituir
ImageView
(ou múltiplos) eTextView
com umTextView
com drawable (s) composto (s). NÃO há muitos parâmetros que podem ser aplicados ao drawable composto usando API nativa e esta biblioteca TextViewRichDrawable , mas se você pode gerenciar um TextView em vez de usar LinearLayout, você definitivamente deve usá-lo .A lista de atributos e parâmetros que podem ser aplicados a drawables compostos:
Tamanho: ( SIM, realmente ):
Até mesmo defina o recurso vetorial como drawable:
Preenchimento do Drawable usando API nativa
android:drawablePadding
-> linkAqui está um exemplo:
fonte
Um
LinearLayout
que contém umImageView
e umTextView
pode ser mais eficientemente tratadas como um composto susceptível de ser estirado (uma únicaTextView
, usando adrawableTop
,drawableLeft
,drawableRight
e / oudrawableBottom
os atributos para desenhar uma ou mais imagens adjacentes ao texto).Se os dois widgets forem deslocados um do outro com margens, isso pode ser substituído por um
drawablePadding
atributo.Há uma correção rápida do lint para realizar essa conversão no plug-in Eclipse.
De: Documentos da API oficial do Android!
fonte
Adicionar
tools:ignore="UseCompoundDrawables"
a<LinearLayout>
.fonte
Quando segui o código acima, o texto dentro de TextView não foi definido corretamente. Você precisa definir sua gravidade para o centro | início para alcançar o que é mostrado na pergunta feita.
A visualização do texto é semelhante a esta:
fonte
Se não quiser alterar ImageView e TextView, você pode alterar a versão no AndroidManifest.xml como:
Se sua versão for android: targetSdkVersion = "17" mude para "18".
Espero que isso seja corrigido. Eu fiz e acertei
fonte
Outra abordagem é incorporar o ViewImage em outro LinearLayout (permitir manipulá-lo apenas com o id):
fonte
fonte