• Checkbox: 无文本的checkbox居中显示


    项目中有一个需求是让Checkbox居中显示,但是给checkBox直接设置 android:gravity="center" 属性无效,效果如下图:

    可以看到,Checkbox中的图片仍然没有居中,后来找到了一种解决办法可以通过自定义CheckBox解决:

    package com.yongdaimi.android.androidapitest.view;
    
    import android.content.Context;
    import android.graphics.Canvas;
    import android.graphics.drawable.Drawable;
    import android.util.AttributeSet;
    import android.view.Gravity;
    
    public class CenterCheckBox extends androidx.appcompat.widget.AppCompatCheckBox {
        private static final String TAG = CenterCheckBox.class.getSimpleName();
    
        public CenterCheckBox(Context context) {
            super(context);
        }
    
        public CenterCheckBox(Context context, AttributeSet attrs) {
            super(context, attrs);
        }
    
        public CenterCheckBox(Context context, AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
        }
    
        @Override
        protected void onDraw(Canvas canvas) {
            super.onDraw(canvas);
            Drawable[] drawables = getCompoundDrawables();
            Drawable drawable = drawables[0];
            int gravity = getGravity();
            int left = 0;
            if (gravity == Gravity.CENTER) {
                left = ((int) (getWidth() - drawable.getIntrinsicWidth() - getPaint().measureText(getText().toString())) / 2);
            }
            drawable.setBounds(left, 0, left + drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
        }
    }

     可以看到效果已经可以了,不过要注意的是,XML中的属性必须定义成上面截图中的样子。

    See: https://www.geek-share.com/detail/2726600111.html

  • 相关阅读:
    Chaos网络库(一) 开篇介绍
    对Oracle中的表进行分区
    java socket编程
    SQL优化
    冒泡排序、选择排序和插入
    集合有趣的地方
    java中String s = new String("abc")创建了几个对象
    集合排序
    接口与抽象类的区别
    软件测试流程
  • 原文地址:https://www.cnblogs.com/yongdaimi/p/13575781.html
Copyright © 2020-2023  润新知