我正在使用TextInput布局创建文本输入框。我想基于输入框的不同变体来应用可绘制资源和颜色资源。
我在res / color和res / drawable目录下创建了不同的xml资源文件。
public enum InputTextVariant {
Standard, Stepper, MultiLine;
}
public void setVariant(int variantParam) {
Drawable d;
ColorStateList csl;
InputTextVariant variant = SpectrumInputTextVariant.values()[variantParam];
switch (variant) {
case Standard:
csl = AppCompatResources.getColorStateList(getContext(), R.color.textcolor_btn_cta);
d = AppCompatResources.getDrawable(getContext(), R.drawable.btn_cta_material);
//setTextColor(csl);
setBackgroundTintList(csl);
setBackground(d);
我想为按钮使用类似于setTextColor的东西。
我为不同的状态(禁用,悬停,聚焦等)指定了不同的颜色和形状。
如何为该TextInputLayout加载颜色资源。
我尝试设置需要API版本> = 21的setBackgroundTint。但我也需要支持较低版本。
最佳答案
您可以在可绘制级别管理色调:
Drawable d = AppCompatResources.getDrawable(...);
ColorStateList csl = AppCompatResources.getColorStateList(...);
d = DrawableCompat.wrap(d);
DrawableCompat.setTintList(csl);
setBackground(d);