package com.swifty.fillcolor.view; import android.content.Context; import android.util.AttributeSet; import android.view.View; import android.widget.Checkable; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import com.swifty.fillcolor.util.DensityUtil; public class ImageCheckBox_define extends LinearLayout implements Checkable, View.OnClickListener { private static final int[] STATE_CHECKABLE = {android.R.attr.state_pressed}; private boolean mChecked; private CheckedImageView imageViewbutton; private TextView textView; private OnCheckedChangeListener mOnCheckedChangeListener; public ImageCheckBox_define(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub imageViewbutton = new CheckedImageView(context, attrs); imageViewbutton.setPadding(DensityUtil.dip2px(context, 5), DensityUtil.dip2px(context, 3), DensityUtil.dip2px(context, 5), DensityUtil.dip2px(context, 3)); imageViewbutton.setAdjustViewBounds(true); imageViewbutton.setScaleType(ImageView.ScaleType.FIT_CENTER); textView = new TextView(context, attrs); //水平居中 textView.setGravity(android.view.Gravity.CENTER_HORIZONTAL); textView.setTextSize(10); textView.setPadding(0, 0, 0, DensityUtil.dip2px(context, 3)); setClickable(true); setFocusable(true); setOrientation(LinearLayout.VERTICAL); addView(imageViewbutton); addView(textView); setOnClickListener(this); } @Override public void setChecked(boolean checked) { if (mChecked == checked) { return; } mChecked = checked; if (mOnCheckedChangeListener != null) { mOnCheckedChangeListener.onCheckedChanged(this, mChecked); } imageViewbutton.refreshDrawableState(); } @Override public boolean isChecked() { return mChecked; } @Override public void toggle() { setChecked(!mChecked); if (mOnCheckedChangeListener != null) { mOnCheckedChangeListener.onCheckedChanged(this, mChecked); } } @Override public void onClick(View v) { mChecked = !mChecked; if (mOnCheckedChangeListener != null) { mOnCheckedChangeListener.onCheckedChanged(this, mChecked); } imageViewbutton.refreshDrawableState(); } public void setOnCheckedChangeListener(OnCheckedChangeListener mOnCheckedChangeListener) { this.mOnCheckedChangeListener = mOnCheckedChangeListener; } @Override protected int[] onCreateDrawableState(int extraSpace) { int[] drawableState = super.onCreateDrawableState(extraSpace + 1); if (mChecked) { mergeDrawableStates(drawableState, STATE_CHECKABLE); } return drawableState; } public class CheckedImageView extends ImageView{ public CheckedImageView(Context context) { super(context); } public CheckedImageView(Context context, AttributeSet attrs) { super(context, attrs); } public CheckedImageView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override public int[] onCreateDrawableState(int extraSpace) { int[] drawableState = super.onCreateDrawableState(extraSpace + 1); if (mChecked) { mergeDrawableStates(drawableState, STATE_CHECKABLE); } return drawableState; } } public void setText(int rid){ textView.setText(rid); } public void setText(String str){ textView.setText(str); } }