Android自定义CheckBox_CheckBox添加图片和文字样式
2015-02-06 13:13:50 By: shinyuu
不知道有没有哥们发现这么一个问题、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
若资源对你有帮助、浏览后有很大收获、不妨小额打赏我一下、你的鼓励是维持我不断写博客最大动力
想获取DD博客最新代码、你可以扫描下方的二维码、关注DD博客微信公众号(ddblogs)
或者你也可以关注我的新浪微博、了解DD博客的最新动态:DD博客官方微博(dwtedx的微博)
如对资源有任何疑问或觉得仍然有很大的改善空间、可以对该博文进行评论、希望不吝赐教
为保证及时回复、可以使用博客留言板给我留言: DD博客留言板(dwtedx的留言板)
感谢你的访问、祝你生活愉快、工作顺心、欢迎常来逛逛