下面列出了android.widget.RadioButton#setButtonTintList ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
public static void setTint(@NonNull RadioButton radioButton, @ColorInt int color, boolean useDarker) {
ColorStateList sl = new ColorStateList(new int[][]{
new int[]{-android.R.attr.state_enabled},
new int[]{android.R.attr.state_enabled, -android.R.attr.state_checked},
new int[]{android.R.attr.state_enabled, android.R.attr.state_checked}
}, new int[]{
// Rdio button includes own alpha for disabled state
ColorUtil.stripAlpha(ContextCompat.getColor(radioButton.getContext(), useDarker ? R.color.ate_control_disabled_dark : R.color.ate_control_disabled_light)),
ContextCompat.getColor(radioButton.getContext(), useDarker ? R.color.ate_control_normal_dark : R.color.ate_control_normal_light),
color
});
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
radioButton.setButtonTintList(sl);
} else {
Drawable d = createTintedDrawable(ContextCompat.getDrawable(radioButton.getContext(), R.drawable.abc_btn_radio_material), sl);
radioButton.setButtonDrawable(d);
}
}
public static void setTint(@NonNull RadioButton radioButton, @ColorInt int color, boolean useDarker) {
ColorStateList sl = new ColorStateList(new int[][]{
new int[]{-android.R.attr.state_enabled},
new int[]{android.R.attr.state_enabled, -android.R.attr.state_checked},
new int[]{android.R.attr.state_enabled, android.R.attr.state_checked}
}, new int[]{
// Radio button includes own alpha for disabled state
ColorUtil.stripAlpha(ContextCompat.getColor(radioButton.getContext(), useDarker ? R.color.ate_control_disabled_dark : R.color.ate_control_disabled_light)),
ContextCompat.getColor(radioButton.getContext(), useDarker ? R.color.ate_control_normal_dark : R.color.ate_control_normal_light),
color
});
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
radioButton.setButtonTintList(sl);
} else {
Drawable d = createTintedDrawable(ContextCompat.getDrawable(radioButton.getContext(), R.drawable.abc_btn_radio_material), sl);
radioButton.setButtonDrawable(d);
}
}
/**
* Tint the radio button
*
* @param radioButton the radio button
* @param color the color
*/
public static void tint(@NonNull RadioButton radioButton, @ColorInt int color) {
final int disabledColor = getDisabledColor(radioButton.getContext());
ColorStateList sl = new ColorStateList(new int[][]{
new int[]{android.R.attr.state_enabled, -android.R.attr.state_checked},
new int[]{android.R.attr.state_enabled, android.R.attr.state_checked},
new int[]{-android.R.attr.state_enabled, -android.R.attr.state_checked},
new int[]{-android.R.attr.state_enabled, android.R.attr.state_checked}
}, new int[]{
getThemeAttrColor(radioButton.getContext(), R.attr.colorControlNormal),
color,
disabledColor,
disabledColor
});
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
radioButton.setButtonTintList(sl);
} else {
Drawable radioDrawable = ContextCompat.getDrawable(radioButton.getContext(), R.drawable.abc_btn_radio_material);
Drawable d = DrawableCompat.wrap(radioDrawable);
DrawableCompat.setTintList(d, sl);
radioButton.setButtonDrawable(d);
}
}
public static void setTint(@NonNull RadioButton radioButton, @ColorInt int color) {
ColorStateList sl = new ColorStateList(new int[][]{
new int[]{-android.R.attr.state_checked},
new int[]{android.R.attr.state_checked}
}, new int[]{
ThemeHelper.resolveColor(radioButton.getContext(), R.attr.colorControlNormal),
color
});
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
radioButton.setButtonTintList(sl);
} else {
Drawable d = DrawableCompat.wrap(ContextCompat.getDrawable(radioButton.getContext(), R.drawable.abc_btn_radio_material));
DrawableCompat.setTintList(d, sl);
radioButton.setButtonDrawable(d);
}
}
@SuppressLint("NewApi")
public static void setTint(RadioButton radioButton, int color) {
ColorStateList sl = new ColorStateList(new int[][]{
new int[]{-android.R.attr.state_checked},
new int[]{android.R.attr.state_checked}
}, new int[]{
DialogUtils.resolveColor(radioButton.getContext(), R.attr.colorControlNormal),
color
});
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
radioButton.setButtonTintList(sl);
} else {
Drawable d = DrawableCompat.wrap(ContextCompat.getDrawable(radioButton.getContext(), R.drawable.abc_btn_radio_material));
DrawableCompat.setTintList(d, sl);
radioButton.setButtonDrawable(d);
}
}
public static void setTint(@NonNull RadioButton radioButton, @ColorInt int color,
boolean useDarker) {
ColorStateList sl = new ColorStateList(new int[][]{
new int[]{-android.R.attr.state_enabled},
new int[]{android.R.attr.state_enabled, -android.R.attr.state_checked},
new int[]{android.R.attr.state_enabled, android.R.attr.state_checked}
}, new int[]{
// Rdio button includes own alpha for disabled state
ColorUtil.stripAlpha(ContextCompat.getColor(radioButton.getContext(),
useDarker ? R.color.ate_control_disabled_dark : R.color.ate_control_disabled_light)),
ContextCompat.getColor(radioButton.getContext(),
useDarker ? R.color.ate_control_normal_dark : R.color.ate_control_normal_light),
color
});
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
radioButton.setButtonTintList(sl);
} else {
Drawable d = createTintedDrawable(
ContextCompat.getDrawable(radioButton.getContext(), R.drawable.abc_btn_radio_material),
sl);
radioButton.setButtonDrawable(d);
}
}
public static void setTint(@NonNull RadioButton radioButton, @ColorInt int color) {
ColorStateList sl = new ColorStateList(new int[][]{
new int[]{-android.R.attr.state_checked},
new int[]{android.R.attr.state_checked}
}, new int[]{
ThemeHelper.resolveColor(radioButton.getContext(), R.attr.colorControlNormal),
color
});
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
radioButton.setButtonTintList(sl);
} else {
Drawable d = DrawableCompat.wrap(ContextCompat.getDrawable(radioButton.getContext(), R.drawable.abc_btn_radio_material));
DrawableCompat.setTintList(d, sl);
radioButton.setButtonDrawable(d);
}
}
/**
* Function to allow updates to the radio buttons UI when a security check has failed Passed
* tests do not need updating due to being the default UI state
*
* @param uiElement - the UI element to update
* @param textResource - the text resource to set the updates text for
*/
public void setCheckFailed(RadioButton uiElement, int textResource) {
totalTestFailures++;
uiElement.setText(textResource);
uiElement.setTextColor(getResources().getColor(R.color.red));
uiElement.setButtonDrawable(R.drawable.baseline_warning);
uiElement.setButtonTintList(ColorStateList.valueOf(getResources().getColor(R.color.red)));
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
final ViewGroup nullParent = null;
convertView = mLayoutInflater.inflate(R.layout.theme_dialog, nullParent);
}
String theme = themeOptions[position];
TextView txtView = convertView.findViewById(R.id.title);
txtView.setText(theme);
RadioButton radioButton = convertView.findViewById(R.id.radio);
int itemColor = ContextCompat.getColor(context, resolveColor(position));
ColorStateList colorStateList = new ColorStateList(
new int[][]{
new int[]{android.R.attr.state_enabled}, //enabled
new int[]{android.R.attr.state_enabled} //disabled
},
new int[]{itemColor, itemColor}
);
txtView.setShadowLayer(1.5f, -1, 1, itemColor);
radioButton.setButtonTintList(colorStateList);
radioButton.setChecked(themeValues[position].equals(selectedTheme));
return convertView;
}
public void themeRadioButton(RadioButton radioButton) {
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
radioButton.setButtonTintList(getTintList());
radioButton.setTextColor(getTextColor());
}
}
public void themeRadioButton(RadioButton radioButton) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
radioButton.setButtonTintList(getTintList());
radioButton.setTextColor(getTextColor());
}
}