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

时间:2015-03-30 02:08:42

标签: android android-custom-view

我想实现一个自定义视图,它由ImageView和像这样的TextView组合。

通过扩展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就像这样。

很抱歉我无法发布图片。

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

如何更改IconTextView的宽度?

1 个答案:

答案 0 :(得分:0)

我认为你不应该做任何像覆盖onDraw那样激烈的事情。

你可以只有一个水平LinearLayout,其ImageViewTextView

更简单的是,您可以使用属性TextView设置android:drawableLeft="@drawable/my_icon"的左侧drawable。如果必须在代码中更改它,则相应的方法为TextView.setCompoundDrawablesWithIntrinsicBounds(int,int,int,int)。必须将图像设置为可绘制的资源才能使其工作。

您的自定义视图是否有一些特殊内容,这些想法无法发挥作用?