【问题标题】:How do I know whether android:textColor has int or ColorStateList value我如何知道 android:textColor 是否具有 int 或 ColorStateList 值
【发布时间】:2014-05-06 19:46:10
【问题描述】:

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

【问题讨论】:

    标签: android textview android-custom-view textcolor


    【解决方案1】:

    根据documentation

    该值可以是单一的纯色,也可以是对颜色或复杂 ColorStateList 描述的引用

    因此,如果用户将颜色设置为单个值,您将获得单个值,否则您将获得对 ColorStateList 的引用。

    【讨论】:

      【解决方案2】:

      有一些方法可以改变 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
      

      等等……

      【讨论】:

      • 是的,我知道。问题是我怎么知道是做 mTextView.setTextColor(ColorStateList) 还是 mTextView.setTextColor(int)?我只知道有人设置了 android:textColor,他们可以设置对样式或单一颜色的引用。
      猜你喜欢
      • 2018-01-01
      • 2020-05-13
      • 1970-01-01
      • 1970-01-01
      • 2023-01-27
      • 2021-09-19
      • 2011-09-07
      • 2022-07-01
      • 2019-06-29
      相关资源
      最近更新 更多