免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2389 | 回复: 0
打印 上一主题 下一主题

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

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-07-31 14:39 |只看该作者 |倒序浏览
问题描述如下:
在使用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获取焦点)显示颜色为蓝色

请大家帮忙分析下是什么原因?多谢了~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP