zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    游标
    浅析数据准备区中的数据结构
    浅析代理键替换管道
    浅析何时进行概况分析
    浅析Staging
    XHTML教程——表单
    XHTML教程——文字格式与特殊字符
    XHTML教程——列表
    XHTML教程——标签
    CSS入门教程——CSS简介
  • 原文地址:https://www.cnblogs.com/yongdaimi/p/13575781.html
Copyright © 2011-2022 走看看