打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

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

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

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

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  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">
  <TextView 
      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"
  />
  <TextView 
      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"
  />
</LinearLayout>


上面示例中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.

可以正常显示的代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  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">
  <TextView 
      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"
  />
  <TextView 
      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"
  />
</LinearLayout>

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
EditText的初始Focus如何消除
AndroidUI优化4
自定义PopupWindow动画效果
/******textview滚动条效果的text***/
android中关于scrollview内部组件android:layout
Android 设置页面UI设计
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服