首页 新闻 会员 周边

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

0
悬赏园豆:20 [待解决问题]
问题描述如下:
在使用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"
  androidrientation="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"
  androidrientation="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获取焦点)显示颜色为蓝色

请大家帮忙分析下是什么原因?多谢了~
风情123的主页 风情123 | 初学一级 | 园豆:28
提问于:2012-07-31 14:43
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册