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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM