Executei a nova ferramenta Lint no meu código. Ele veio com muitas sugestões boas, mas essa eu não consigo entender.
Esta tag e seus filhos podem ser substituídos por um e um drawable composto
Problema: verifica se o nó atual pode ser substituído por um TextView usando drawables compostos.
Um LinearLayout que contém um ImageView e um TextView pode ser tratado com mais eficiência como um drawable composto
E aqui está o meu layout
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_centerInParent="true">
<ImageView
android:id="@+id/upImage"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_gravity="center_vertical"
android:scaleType="centerInside"
android:src="@drawable/up_count_big">
</ImageView>
<TextView
android:id="@+id/LikeCount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="2dp"
android:layout_marginBottom="1dp"
android:textColor="@color/gray"
android:textSize="16sp"
android:layout_gravity="center_vertical">
</TextView>
</LinearLayout>
Alguém pode fornecer um exemplo concreto de como tornar um composto extraível nesse caso?
TextView
/ImageView
combos podem ser substituídos desta forma.Respostas:
TextView
vem com 4 drawables compostos, um para cada um dos lados esquerdo, superior, direito e inferior.No seu caso, você não precisa do
LinearLayout
eImageView
em tudo. Basta adicionarandroid:drawableLeft="@drawable/up_count_big"
ao seuTextView
.Consulte TextView # setCompoundDrawablesWithIntrinsicBounds para obter mais informações.
fonte
ImageView
. O aviso diz 'pode ser substituído por', não 'deve ser substituído por'se, por algum motivo, você precisar adicionar via código, poderá usar isso:
onde esquerdo, superior e inferior direito são Drawables
fonte
Para adicionar a isso - parece importante definir a largura e a altura do drawable de acordo com este post:
(o código dele funciona)
fonte
Você pode usar a implementação geral do drawable composto, mas se precisar definir um tamanho do drawable, use esta biblioteca:
https://github.com/a-tolstykh/textview-rich-drawable
Aqui está um pequeno exemplo de uso:
fonte