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 了、并且还支持选择框和文字之间放一张图片、效果图如下

自定义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的留言板)

感谢你的访问、祝你生活愉快、工作顺心、欢迎常来逛逛


快速评论


技术评论

  • 该技术还没有评论、赶快抢沙发吧...
DD记账
top
+