我如何知道android:textColor是否具有int或ColorStateList值

时间:2014-05-06 19:46:11

标签: android textview android-custom-view textcolor

在自定义视图组中,我将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吗?

2 个答案:

答案 0 :(得分:1)

根据documentation

  

值可以是单一纯色,也可以是对颜色或复杂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

等等...