TextView中可以设置一个ellipsize属性,作用是当文字长度超过textview宽度时的显示方式:
例如,"encyclopedia"显示, 只是举例,以实际显示为准:)
Android:ellipsize=”start”—–省略号显示在开头 "...pedia"
android:ellipsize=”end”——省略号显示在结尾 "encyc..."
android:ellipsize=”middle”—-省略号显示在中间 "en...dia"
android:ellipsize=”marquee”–以横向滚动方式显示(需获得当前焦点时)
对于使用marquee即滚动显示方式的,需要当前textview获得焦点才会滚动。所以有时可能因为实际需要,textview未获得焦点或者需要多个textview都同时滚动显示时,可以采用以下办法:
因为判断textview是否处于focused状态是通过它本身isFocused()方法,这样只要此方法返回为true时,即认为处于focused的状态,就可以滚动啦。
所以可以通过继承TextView类,并override isFocused()方法来控制是否滚动咯。
另外如果是组合View,外层layout需要加入以下属性来保证focus状态的传递:addStatesFromChildren="true"
TextView文字滚动
<TextView
android:focusableInTouchMode="true"
android:focusable="true"
android:ellipsize="marquee"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:text="我是滚动文本,我会滚动的"
android:textSize="16sp" />
Button 有文字滚动
<Button
android:focusableInTouchMode="true"
android:textColor="#000000"
android:layout_width="fill_parent"
android:singleLine="true"
android:layout_height="wrap_content"
android:ellipsize="marquee"
android:layout_gravity="center_horizontal"
android:text="欢迎使用手机卫士,呵呵欢迎使用手机卫士"
android:textSize="16sp"
/>