Drawable的setBounds方法有四个参数,setBounds(int left, int top, int right, int bottom),这个四参数指的是drawable将在被绘制在canvas的哪个矩形区域内。
例如
@Override
protected void onDraw(Canvas canvas) {
drawable.setBounds(100, 100, 500, 500);
drawable.draw(canvas);
}
上面的代码会将drawable绘制在canvas内部(100,100,500,500)表示的矩形区内(这个矩形区域的坐标是以canvas左上角为坐标原点的)
一.textview已经指定了drawableTop的图片,但是需要在Java中重新更换一张图片:
//获取更换的图片
Drawable drawable=geeResources().getDrawable(R.drawable.close);
//setBounds(x,y,width,height)
drawable.setBounds(0,0,drawable.getMinimumWidth(),drawable.getMinimumHeight());
//mDownLoad是控件的名称,setCompoundDrawables(left,top,right,bottom)
mDownLoad.setCompoundDrawables(null,drawable,null,null);
二.textView右上角小红点效果图:
Drawable drawable = mContext.getResources().getDrawable(R.drawable.layer_list_red_dot,null);
drawable.setBounds(1,1,40,60);
viewHolder.timeTextView.setCompoundDrawables(null,null,drawable,null);
drawable文件夹下创建:\res\drawable\layer_list_red_dot.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:width="1dp"
android:height="1dp"
>
<!--top让bitmap可以往下偏移13dp-->
<!--使用bitmap标签和Gravity让小红点不缩放-->
<bitmap
android:antialias="true"
android:gravity="top"
android:src="@drawable/red_dot"/>
</item>
</layer-list>
布局文件中TextView:
<TextView
android:id="@+id/textview_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:gravity="center"
android:text="12:22"
android:textSize="15sp"
/>
红点: