Android自定义CheckBox_CheckBox添加图片和文字样式
程序员文章站
2022-03-01 14:34:14
...
不知道有没有哥们发现这么一个问题、Android 的控件 CheckBox 和 RadioButton 在配合一些复杂的地方使用、比如和 ImageView、TextView等控件配合使用完成一些复杂的功能的时候会出现兼容性问题、如果你使用了 paddingLeft 来使用按钮和文字之前有一点距离的时候、在Android 4.2 以下的机器上面会出现文字偏移的问题、亲测索尼和小米V5(Android 4.2以下)的系统上会出现这种现象、那么针对这一现象、想了很多办法都不能解决、最后只有自己封装一个 CheckBox 了、如果有哥们也遇到了同样的情况、那么恭喜你了、你可以直接使用我已经封装好的 CheckBox 了、并且还支持选择框和文字之间放一张图片、效果图如下
MyCheckBox核心代码
public MyCheckBox(Context context, AttributeSet attrs) { super(context, attrs); TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.mycheckbox); mChecked = a.getBoolean(R.styleable.mycheckbox_checked, false); mTextSize = a.getInt(R.styleable.mycheckbox_ctext_size, 14); mTextColor = a.getColor(R.styleable.mycheckbox_ctext_color, 0XFF333333); mText = a.getString(R.styleable.mycheckbox_ctext); mImageRes = a.getResourceId(R.styleable.mycheckbox_src, -1); mSpacing = a.getInt(R.styleable.mycheckbox_spacing, 24); a.recycle(); LayoutInflater.from(context) .inflate(R.layout.widget_my_checkbox, this, true); mCheckBox = (ImageView)this.findViewById(R.id.my_checkbox); mCheckBox.setSelected(mChecked); mImageView = (ImageView)this .findViewById(R.id.my_checkbox_images); if(-1 != mImageRes){ mImageView.setBackgroundResource(mImageRes); LinearLayout.LayoutParams lp = new LinearLayout .LayoutParams(36, 36); lp.setMargins(mSpacing, 0, 0, 0); mImageView.setLayoutParams(lp); mImageView.setScaleType(ImageView.ScaleType.FIT_CENTER); mImageView.setVisibility(View.VISIBLE); } mTextView = (TextView)this.findViewById(R.id.my_checkbox_text); if(null != mText){ mTextView.setText(mText); LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams( android.view.ViewGroup.LayoutParams.WRAP_CONTENT, android.view.ViewGroup.LayoutParams.WRAP_CONTENT); lp.setMargins(mSpacing, 0, 0, 0); mTextView.setLayoutParams(lp); mTextView.setTextSize(TypedValue.COMPLEX_UNIT_SP ,mTextSize); mTextView.setTextColor(mTextColor); mTextView.setVisibility(View.VISIBLE); } View v = this.findViewById(R.id.my_checkbox_linearLayout); v.setOnClickListener(this); }
调用也很简单、直接在xml里面写就可以了
<com.dwtedx.widget.MyCheckBox android:id="@ id/my_checkbox" android:layout_width="wrap_content" android:layout_height="wrap_content" mycheckbox:ctext="@string/action_value" mycheckbox:src="@drawable/toyota" />
源代码链接: http://dwtedx.com/download.html?bdkey=s/1qWBfvbA 密码: 5tfi
上一篇: 高级Java开发人员最常访问的几个网站
下一篇: Java生成验证码图片实现代码