问题描述如下: 在使用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获取焦点)显示颜色为蓝色 请大家帮忙分析下是什么原因?多谢了~ |