如何在Android中更改组合自定义视图的宽度?

如何在Android中更改组合自定义视图的宽度?,android,android-custom-view,Android,Android Custom View,我想实现一个自定义视图,它由一个ImageView和一个TextView组合而成,如下所示 <com.liujilong.carson.icontextview.IconTextView android:layout_width="wrap_content" android:layout_height="wrap_content" mobile:iconSrc="@drawable/ic_launcher" android:text="myIconTextV

我想实现一个自定义视图,它由一个ImageView和一个TextView组合而成,如下所示

<com.liujilong.carson.icontextview.IconTextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    mobile:iconSrc="@drawable/ic_launcher"
    android:text="myIconTextView"
    android:textSize="30sp"
    />
通过扩展TextView创建了一个名为IconTextView的类,并由此重写了onDraw函数

@Override
protected void onDraw(Canvas canvas)
{
    if (bitmap != null)
    {
        //something are done before
        canvas.drawBitmap(bitmap, src, target, getPaint());
        canvas.translate(target.right + 2, 0);
    }
    super.onDraw(canvas);
}
然后,一个IconTextView被添加到主布局中,如下所示

<com.liujilong.carson.icontextview.IconTextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    mobile:iconSrc="@drawable/ic_launcher"
    android:text="myIconTextView"
    android:textSize="30sp"
    />
我手机中显示的IconTextView如下所示

<com.liujilong.carson.icontextview.IconTextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    mobile:iconSrc="@drawable/ic_launcher"
    android:text="myIconTextView"
    android:textSize="30sp"
    />
很抱歉,我不能发布图片

问题是视图的宽度仍然是TextView的宽度,我翻译了画布。因此,文本无法完全显示


如何更改IconTextView的宽度?

我认为您不必做像override onDraw那样激烈的事情

你可以有一个水平的线性布局,它有一个ImageView和一个TextView

更简单的是,您可以使用属性android:drawablelft=@drawable/my_icon设置TextView的left-drawable。如果必须在代码中对其进行更改,则相应的方法是TextView.setCompoundDrawableSwithinInstincBoundsInt,int,int。必须将图像设置为可绘制资源才能工作

您的自定义视图是否有什么特别之处,这些想法不起作用