package com.prolificinteractive.materialcalendarview; import android.content.Context; import android.graphics.PorterDuff; import android.os.Build; import android.util.TypedValue; import android.widget.ImageView; /** * An {@linkplain android.widget.ImageView} to pragmatically set the color of arrows * using a {@linkplain android.graphics.ColorFilter} */ class DirectionButton extends ImageView { public DirectionButton(Context context) { super(context); setBackgroundResource(getThemeSelectableBackgroundId(context)); } public void setColor(int color) { setColorFilter(color, PorterDuff.Mode.SRC_ATOP); } @Override public void setEnabled(boolean enabled) { super.setEnabled(enabled); setAlpha(enabled ? 1f : 0.1f); } private static int getThemeSelectableBackgroundId(Context context) { //Get selectableItemBackgroundBorderless defined for AppCompat int colorAttr = context.getResources().getIdentifier( "selectableItemBackgroundBorderless", "attr", context.getPackageName()); if (colorAttr == 0) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { colorAttr = android.R.attr.selectableItemBackgroundBorderless; } else { colorAttr = android.R.attr.selectableItemBackground; } } TypedValue outValue = new TypedValue(); context.getTheme().resolveAttribute(colorAttr, outValue, true); return outValue.resourceId; } }