Fwl的小花园

  博客园 :: 首页 :: 博问 :: 闪存 :: :: 联系 :: :: 管理 ::

要实现跑马灯还是比较简单的。

同时有几个需要注意的点,先上代码:

 1 public class MTView extends TextView {
 2 
 3 
 4     public MTView(Context context) {
 5         super(context);
 6     }
 7 
 8     public MTView(Context context, AttributeSet attrs) {
 9         super(context, attrs);
10     }
11 
12     public MTView(Context context, AttributeSet attrs, int defStyleAttr) {
13         super(context, attrs, defStyleAttr);
14     }
15 
16     public MTView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
17         super(context, attrs, defStyleAttr);
18     }
19 
20     @Override
21     public boolean isFocused() {
22         return true;
23     }
24 }
1 <me.fwl.MTView
2         android:layout_width="120dp"
3         android:layout_height="20dp"
4         android:layout_centerInParent="true"
5         android:ellipsize="marquee"
6         android:gravity="center_vertical"
7         android:singleLine="true"
8         android:marqueeRepeatLimit="marquee_forever"
9         android:text="Android中重写TextView实现 跑马灯 最简单的方法" />

需要注意的是:

1,ellipsize,这个属性表示文本过长的时候怎么处理?

  可选的属性有如下几个:start表示截取一部分显示,省略号在开头;middle表示截取头尾,中间用省略号;end表示取前面这一段,省略号在后面;marquee表示跑马灯的滚动效果,不截取,一直滚动;none 表示不做任何处理,也就是截取前面一段,和end的区别是,end后面以省略号结尾,而none直接截断。

2,singleLine ,这个属性是必须要设置的。如果可以多行的,你怎么跑?用脚指头都可以想明白。

3,marqueeRepeatLimit,表示重复的次数,可以直接传一个int的值。传入marquee_forever 和 -1 表示无限次循环。

4,要获取焦点,这里采取的是,重写TextView的isFocus() 方法来控制其焦点,xml也可以设置获取焦点,但你不能保证被其他人抢走啊,所以,要重写。

 

--------------------------------------------升级---------------升级---------------升级---------------升级---------------升级---------------------------------------------------------------

 

这段时间,朋友遇到一个需求,就是在此基础上,要增加图标,也就是不是简单的文字滚动,前面还带个图标,而且是多条数据

上代码

String source = "<span><img src=\"icon_more_up.png\"><span>1文字这五年,张三这样谈文化遗产保护</span><img src=\"icon_more_up.png\"><span>2文字这五年,李四这样谈文化遗产保护</span></span>";
        marqueue = view.findViewById(R.id.marqueue);

        marqueue.setText(Html.fromHtml(source, new Html.ImageGetter() {
            @Override
            public Drawable getDrawable(String s) {
                int imgid = R.drawable.icon_more_down;
                if (s.equals("icon_more_up.png")) {
                    imgid = R.drawable.icon_more_up;
                }
                Drawable drawable = ReportFragment.this.getActivity().getResources().getDrawable(imgid);
                drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
                return drawable;
            }
        }, null));

  这个也很简单嘛,就这样

 

更新于:2017-9-16 中午,佛山

posted on 2017-01-04 17:08  Fwl的小花园  阅读(1928)  评论(0编辑  收藏  举报