[Android] ColorStateList的第一个参数为什么要用二维数组?(我觉得一维就够了)

风情123 发布于 2012/07/31 14:40
阅读 1K+
收藏 0
问题描述如下:
在使用TextView控件的setTextColor方法时发现ColorStateList的实现关于第一个参数要用二维数组的,但是我觉得一维的就足够了,不知道为什么的?
使用如下:
情况一:
1.main.xml文件内容如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical" >
  <TextView
  android:id="@+id/textview_text"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:text="@string/hello"
  android:focusable="true"
  android:clickable="true"
  android:background="#FFFFFF"
  />

</LinearLayout>
2..java文件内容如下:
  public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  ColorStateList colors = new ColorStateList(
  new int[][] {{ android.R.attr.state_pressed},{ android.R.attr.state_focused}, {0}},
  new int[] { Color.RED ,Color.GREEN, Color.BLUE});
  mTextView.setTextColor(colors);
  }
预期结果:
启动后文本显示颜色为 蓝色 ;
单击TextView控件,颜色变为 红色 ;
按方向键(向下)(目的是让TextView获取焦点)显示颜色为 绿色
实际结果:此时与预期结果一致


情况二:
1.main.xml文件内容如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical" >
  <TextView
  android:id="@+id/textview_text"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:text="@string/hello"
  android:focusable="true"
  android:clickable="true"
  android:background="#FFFFFF"
  />

</LinearLayout>
2..java文件内容如下:
  public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  ColorStateList colors = new ColorStateList(
  new int[][] {{ android.R.attr.state_pressed, android.R.attr.state_focused},{0}},
  new int[] { Color.RED , Color.BLUE});
  mTextView.setTextColor(colors);
  }
预期结果:
启动后文本显示颜色为 蓝色 ;
单击TextView控件,颜色变为 红色 ;
按方向键(向下)(目的是让TextView获取焦点)显示颜色为 红色
实际结果:
启动后文本显示颜色为 蓝色 ;
单击TextView控件,颜色变为 蓝色 ;
按方向键(向下)(目的是让TextView获取焦点)显示颜色为 蓝色

请大家帮忙分析下是什么原因?多谢了~
加载中
返回顶部
顶部