addStatesFromChildren 和跑马灯 - java - JavaEye技术网站

来源:百度文库 编辑:神马文学网 时间:2024/04/27 19:29:54

在Android中要显示跑马灯是比较容易的,只要设置2个属性就可以了:
android:singleLine="true"
android:ellipsize="marquee"

但是要显示跑马灯该View必需是可以取得焦点的,只有在取得焦点的情况下跑马灯才会出现.
如果是组合View的情况下就有问题了,如下一个组合View:


  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:gravity="center_vertical"
  android:background="@drawable/f_background"
  android:layout_width="fill_parent"
  android:focusable="true"
  android:layout_height="50px">
        android:id="@+id/info_text"
      android:focusable="true"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:text="test marquee .. "
      android:textColor="@color/black"
      android:singleLine="true"
      android:ellipsize="marquee"
      android:marqueeRepeatLimit="3"
      android:textSize="18sp"
  />
        android:id="@+id/date_text"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:layout_gravity="bottom"
      android:textColor="@color/gray"
      android:text="2010/05/28"
      android:textSize="12sp"
  />


上面示例中2个TextView组合为一个View,由于设置了LinearLayout为focusable而TextView就没法取得焦点了,这样这个TextView的跑马灯效果就显示不出来,就算你也设置TextView的 android:focusable="true" 也是没用的. 这个时候就要使用addStatesFromChildren 这个属性了,在LinearLayout中设置这个属性,然后设置TextView的focusable="true"就可以了.关于addStatesFromChildren的说明:

Setswhether thisViewGroup's drawablestates also include its children's drawablestates.

可以正常显示的代码:


  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:gravity="center_vertical"
  android:background="@drawable/zixun_background"
  android:layout_width="fill_parent"
  android:addStatesFromChildren="true"
  android:layout_height="50px">
        android:id="@+id/info_text"
      android:focusable="true"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:text=" "
      android:textColor="@color/black"
      android:singleLine="true"
      android:ellipsize="marquee"
      android:marqueeRepeatLimit="3"
      android:textSize="18sp"
  />
        android:id="@+id/date_text"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:layout_gravity="bottom"
      android:textColor="@color/gray"
      android:text="2010/05/28"
      android:textSize="12sp"
  />


addStatesFromChildren 和跑马灯 - java - JavaEye技术网站 JAVA学习路线 JavaEye技术网站 java开发注意事项 - Java的研发路程 - JavaEye技术网站 一个Java程序实现读取本地ip和服务器ip - - JavaEye技术网站 JAVA内部类的作用 - - JavaEye技术网站 java与j2ee书籍 - Y云 - JavaEye技术网站 为什么java中只允许继承一个类? - 就只会点Java - JavaEye技术网站 卡布奇诺 - JavaEye技术网站 CR,LF回车和换行(转) - Null - JavaEye技术网站 HBase的概念和性能选项 - - JavaEye技术网站 oracle创建表空间和用户授权 - - JavaEye技术网站 浏览器加载和渲染网页的过程 - - JavaEye技术网站 mysql和SQL Server的互相转换 - - JavaEye技术网站 [转]实现业务系统中的用户权限管理 - 我在Java岛的日子 - JavaEye技术网站 深入浅出 java代理机制 - 分享知识是进步最快的捷径 - JavaEye技术网站 firefox 3.0版本以上如何安装google notebook笔记本插件 - Java技术交流 - JavaEye技术网站 Java,JavaScript,Oracle,MySql,VBscript的换行符 - - JavaEye技术网站 Java虚拟机的10年- -(转) - Apusic初学者园地 - JavaEye技术网站 怎样学Java才是硬道理 - 从最近的目标开始 - JavaEye技术网站 怎样学Java才是硬道理 - 从最近的目标开始 - JavaEye技术网站 Java循环的3种方式(小结) - MMY - JavaEye技术网站 java面试题-andyaohui -JavaEye技术社区 JSTL使用 - - JavaEye技术网站 enum用法 - - JavaEye技术网站