TextView中的drawableleft图标不和文字一起居中

来源:互联网 发布:简单java技术分享ppt 编辑:程序博客网 时间:2024/04/29 08:18
设置gravity为center也无济于事,终于有空研究了一下,这里与大家一起分享。![这里写图片描述](http://img.blog.csdn.net/20170616180830607?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzYwODMyNDU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)    <TextView        android:id="@+id/text"        android:clickable="true"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_below="@+id/scann"        android:layout_marginTop="20dp"        android:gravity="center"        android:drawableLeft="@drawable/bianji"        android:drawablePadding="5dp"        android:text="@string/text"        android:textSize="16sp" />  下面来解决这个问题,,,, ```方法:自定义view 继承textview,public class DrawableCenterTextView  extends TextView{    public DrawableCenterTextView(Context context) {        super(context);        // TODO Auto-generated constructor stub    }    public DrawableCenterTextView(Context context, AttributeSet attrs,            int defStyle) {        super(context, attrs, defStyle);        // TODO Auto-generated constructor stub    }    public DrawableCenterTextView(Context context, AttributeSet attrs) {        super(context, attrs);        // TODO Auto-generated constructor stub    }    @Override    protected void onDraw(Canvas canvas) {        //在布局文件中设置TextView的四周图片,用getCompoundDrawables方法可以获取这4个位置的图片        Drawable[]  drawables =  getCompoundDrawables();        if(drawables !=  null){            Drawable left = drawables[0];            if(left != null){                float textWidth = getPaint().measureText(getText().toString());                int  padding = getCompoundDrawablePadding();                int width = 0;                width = left.getIntrinsicHeight();                float bodyWidth = textWidth + width + padding;                canvas.translate((getWidth() - bodyWidth)/2, 0);            }        }        super.onDraw(canvas);    }}在看之前的布局,,,,,    <com.gensee.view.DrawableCenterTextView        android:id="@+id/text"        android:clickable="true"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_below="@+id/scann"        android:layout_marginTop="20dp"        android:gravity="center_vertical"        android:drawableLeft="@drawable/bianji"        android:drawablePadding="5dp"        android:text="@string/text"        android:textSize="16sp" />```和之前的改变就是没有了gravity属性,自定义view 已经帮我们实现了![这里写图片描述](http://img.blog.csdn.net/20170616181843627?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzYwODMyNDU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)是不是很简单 ,喜欢的点个赞!!!
阅读全文
0 0