我想实现一个自定义视图,它由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的宽度?
答案 0 :(得分:0)
我认为你不应该做任何像覆盖onDraw
那样激烈的事情。
你可以只有一个水平LinearLayout
,其ImageView
和TextView
更简单的是,您可以使用属性TextView
设置android:drawableLeft="@drawable/my_icon"
的左侧drawable。如果必须在代码中更改它,则相应的方法为TextView.setCompoundDrawablesWithIntrinsicBounds(int,int,int,int)
。必须将图像设置为可绘制的资源才能使其工作。
您的自定义视图是否有一些特殊内容,这些想法无法发挥作用?