Custom Imageview Class Onclick Change Imageresource
I've created a custom ImageView class, and I'm trying to change the imageResource when user click on it, but I'm able to call setImageResource() from that class. Also I'd like to s
Solution 1:
A solution for a custom toggleable ImageView
:
Custom attribute in values/attr.xml
<?xml version="1.0" encoding="utf-8"?><resources><declare-styleablename="ToggleImageView"><attrname="low_img"format="reference" /><attrname="high_img"format="reference" /></declare-styleable></resources>
Custom ImageView
class:
publicclassToggleImageViewextendsAppCompatImageViewimplementsView.OnClickListener {
privateDrawable mLowDrawable, mHighDrawable;
privateboolean isLow = true;
publicToggleImageView(Context context, @NullableAttributeSet attrs) {
super(context, attrs);
// Extract drawables from custom attributesTypedArray values = context.obtainStyledAttributes(attrs, R.styleable.ToggleImageView);
setLowDrawable(values.getDrawable(R.styleable.ToggleImageView_low_img));
setHighDrawable(values.getDrawable(R.styleable.ToggleImageView_high_img));
values.recycle();
setImageDrawable(mLowDrawable);
super.setOnClickListener(this);
}
publicvoidsetLowDrawable(Drawable drawable) {
mLowDrawable = drawable;
if (isLow)
setImageDrawable(mLowDrawable);
}
publicvoidsetHighDrawable(Drawable drawable) {
mHighDrawable = drawable;
if (!isLow)
setImageDrawable(mHighDrawable);
}
@OverridepublicvoidsetOnClickListener(@Nullable OnClickListener l) {
// Do nothing to block setting listener from outer caller
}
@OverridepublicvoidonClick(View view) {
toggle();
}
publicvoidtoggle() {
isLow = !isLow;
setImageDrawable(isLow ? mLowDrawable : mHighDrawable);
}
}
Usage in xml layout:
<?xml version="1.0" encoding="utf-8" ?><FrameLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/root_container"android:layout_width="match_parent"android:layout_height="match_parent"><com.example.tamhuynh.testfragment.ToggleImageViewandroid:id="@+id/toggle_img"android:layout_width="100dp"android:layout_height="100dp"android:layout_gravity="center"app:high_img="@mipmap/high_drawable"app:low_img="@drawable/low_drawable"tools:low_img="@drawable/low_drawable" /></FrameLayout>
Post a Comment for "Custom Imageview Class Onclick Change Imageresource"