Android 如何使用复合可绘制布局而不是包含ImageView和TextView的LinearLayout

Android 如何使用复合可绘制布局而不是包含ImageView和TextView的LinearLayout,android,android-layout,android-linearlayout,textview,compound-drawables,Android,Android Layout,Android Linearlayout,Textview,Compound Drawables,根据我的代码运行新的Lint工具。它提出了很多好的建议,但这个我不明白 此标签及其子标签可替换为一个和一个复合可拉伸标签 问题:检查当前节点是否可以使用复合绘图选项替换为TextView 包含ImageView和TextView的LinearLayout可以更有效地作为复合可绘制视图处理 这是我的布局 <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_co

根据我的代码运行新的Lint工具。它提出了很多好的建议,但这个我不明白

此标签及其子标签可替换为一个和一个复合可拉伸标签

问题:检查当前节点是否可以使用复合绘图选项替换为TextView

包含ImageView和TextView的LinearLayout可以更有效地作为复合可绘制视图处理

这是我的布局

<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>


有人能提供一个具体的例子来说明如何在这种情况下使复合绘图吗?

TextView
提供了4个复合绘图工具,左、上、右和下各一个

在您的情况下,根本不需要
LinearLayout
ImageView
。只需将android:drawableLeft=“@drawable/up\u count\u big”添加到您的
文本视图中即可


有关更多信息,请参阅。

要对此进行补充,请根据本帖定义可拉伸的宽度和高度:


(他的代码有效)

如果出于某种原因需要通过代码添加,您可以使用以下方法:

mTextView.setCompoundDrawablesWithIntrinsicBounds(left, top, right, bottom);

如果左、上、右下是可绘制的,则可以使用通用的复合可绘制实现,但如果需要定义可绘制的大小,请使用此库:

下面是一个小的用法示例:

<com.tolstykh.textviewrichdrawable.TextViewRichDrawable
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Some text"
        app:compoundDrawableHeight="24dp"
        app:compoundDrawableWidth="24dp" />


不一定,因为您的链接显示了一个带有动态图像的示例。在这种情况下,使用
图像视图可能更容易或更可取。警告说“可以替换为”,而不是“应该替换为”,但如何在图像和图像之间留出一些空间Text@HiteshDhamshaniya,在XML或代码中使用DrawablePadding属性。在我的例子中,我移动到了带有内部ImageView/TextView的LinearLayout,因为android:drawableLeft没有提供足够的控制,所以,你基本上告诉我的是,这个警告/建议是一个谎言。它不是谎言,在某些情况下,一个单一的文本视图确实是有效的。但总的来说,是的,ImageView和TextView提供了更丰富的控件。fwiw这是我通常禁用的检查之一,因为存在误报。并非所有的
TextView
/
ImageView
组合都可以用这种方式替换。@RichardLeMesurier如果要定义图像的大小,可以使用自定义视图。这将使您的视图更轻松。请参阅我的答案:“亚历克斯,我在很多情况下都同意,但是在我的经验中,我经常不需要麻烦地创建一个自定义视图来绕过我认为是一个BUG GICT检查。需要API 17以上,我不这么认为,从API 1的状态看到这个链接[文档](,android.graphics.drawable.drawable,android.graphics.drawable.drawable,android.graphics.drawable.drawable))是的,注意方法名称中的相对值;)我在回答中不是指这个