Android - Spacing between CheckBox and text

前端 未结 29 2701
广开言路
广开言路 2020-11-27 09:24

Is there an easy way to add padding between the checkbox in a CheckBox control, and the associated text?

I cannot just add leading spaces, because my label is multi-

29条回答
  •  有刺的猬
    2020-11-27 10:00

    I just concluded on this:

    Override CheckBox and add this method if you have a custom drawable:

    @Override
    public int getCompoundPaddingLeft() {
    
        // Workarround for version codes < Jelly bean 4.2
        // The system does not apply the same padding. Explantion:
        // http://stackoverflow.com/questions/4037795/android-spacing-between-checkbox-and-text/4038195#4038195
    
        int compoundPaddingLeft = super.getCompoundPaddingLeft();
    
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1) {
            Drawable drawable = getResources().getDrawable( YOUR CUSTOM DRAWABLE );
            return compoundPaddingLeft + (drawable != null ? drawable.getIntrinsicWidth() : 0);
        } else {
            return compoundPaddingLeft;
        }
    
    }
    

    or this if you use the system drawable:

    @Override
    public int getCompoundPaddingLeft() {
    
        // Workarround for version codes < Jelly bean 4.2
        // The system does not apply the same padding. Explantion:
        // http://stackoverflow.com/questions/4037795/android-spacing-between-checkbox-and-text/4038195#4038195
    
        int compoundPaddingLeft = super.getCompoundPaddingLeft();
    
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1) {
            final float scale = this.getResources().getDisplayMetrics().density;
            return compoundPaddingLeft + (drawable != null ? (int)(10.0f * scale + 0.5f) : 0);
        } else {
            return compoundPaddingLeft;
        }
    
    }
    

    Thanks for the answer :)

提交回复
热议问题