在自定义视图组中,我将TextView作为子项。我想基于android:textColor值设置这个TextView的textColor。所以在res / values / styles.xml中我有:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="CustomViewGroupTextView">
<attr name="android:textColor" />
</declare-styleable>
</resources>
在CustomViewGroup的构造函数中,我有这个:
private TextView mTextView;
public CustomViewGroup(Context context) {
super(context);
initTextView(context, attrs);
}
public CustomViewGroup(Context context, AttributeSet attrs) {
super(context, attrs);
initTextView(context, attrs);
}
public CustomViewGroup(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
initTextView(context, attrs);
}
private void initTextView(Context context, AttributeSet attrs) {
mTextView = new TextView(
TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.CustomViewGroupTextView);
// Set text color
ColorStateList textColor = ta.getColorStateList(R.styleable.MinutiaeTextView_android_textColor);
if (textColor != null) {
mTextView.setTextColor(textColor);
}
}
我的问题是:我如何正确地做mTextView.setTextColor?任何人都可以在android:textColor中放置整个颜色状态列表或单个颜色值。或者如果有人在android:textColor中添加一种颜色,我会得到一个颜色相同的ColorStateList吗?
答案 0 :(得分:1)
值可以是单一纯色,也可以是对颜色或复杂ColorStateList描述的引用
因此,如果用户将颜色设置为单个值,您将获得单个值,否则您将获得对ColorStateList
的引用。
答案 1 :(得分:0)
有一些方法可以更改TextView的颜色:
mTextView.setTextColor(Color.RED); (RED, WHITE, BLACK....)
mTextView.setTextColor(Color.rgb(200,0,0));
mTextView.setTextColor(getResources().getColor(R.color.yourcolor));
mTextView.setTextColor(0xAARRGGBB);
编辑: 在布局xml文件中,在特定的TextView中使用此属性:
android:textColor="Here"
你在哪里读到这里你可以写:
android:color/white (black, red...)
color/yourcolorname
#738184
等等...