您的位置:首页 > 移动开发 > Android开发

Android控件之TextView跑马灯效果

2013-11-10 16:20 357 查看
TextView中的文本太多时,我们希望文本以跑马灯的形式展现,xml文件中对TextView做以下属性配置即可实现:

    <TextView

        android:id="@+id/show"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:layout_margin="10dp"

        android:ellipsize="marquee"

        android:focusable="true"

        android:scrollHorizontally="true"

        android:focusableInTouchMode="true"

        android:marqueeRepeatLimit="marquee_forever"

        android:padding="10dp"

        android:singleLine="true" />

 

  String html = "囿于安全性、<b>合规性和</b>风险等方面的挑战,即使海外,金融业也从未真正将业务迁往公有云。无可奈何之下,余额宝“背水一战”,却发现胜利的果实是如此甜美。";

  CharSequence charSequence = Html.fromHtml(html);// 支持html

  show.setText(charSequence);

  show.setMovementMethod(LinkMovementMethod.getInstance());// 可以

 

在手机上试了下,没有效果,然而在虚拟机上试了下却有效果。百思不解??

虚拟机上的效果图:


 

 

======================================================================================================

======================================================================================================

另外一种方式:

继承TextView:

package com.example.html;

import android.content.Context;

import android.graphics.Rect;

import android.text.TextUtils.TruncateAt;

import android.util.AttributeSet;

import android.widget.TextView;

public class ScrollingTextView extends TextView {

 public ScrollingTextView(Context context, AttributeSet attrs, int defStyle) {

  super(context, attrs, defStyle);

  init();

 }

 public ScrollingTextView(Context context, AttributeSet attrs) {

  super(context, attrs);

  init();

 }

 public ScrollingTextView(Context context) {

  super(context);

  init();

 }

 @Override

 protected void onFocusChanged(boolean focused, int direction,

   Rect previouslyFocusedRect) {

  if (focused)

   super.onFocusChanged(focused, direction, previouslyFocusedRect);

 }

 @Override

 public void onWindowFocusChanged(boolean focused) {

  if (focused)

   super.onWindowFocusChanged(focused);

 }

 @Override

 public boolean isFocused() {

  return true;

 }

 // add by laomo

 private void init() {

  setEllipsize(TruncateAt.MARQUEE);// 对应android:ellipsize="marquee"

  setMarqueeRepeatLimit(-1);// 对应android:marqueeRepeatLimit="marquee_forever"

  setSingleLine();// 等价于setSingleLine(true)

 }

}

    <com.example.html.ScrollingTextView

        android:id="@+id/show"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content" />

 

  show = (ScrollingTextView) findViewById(R.id.show);

  String html = "囿于安全性、<b>合规性和</b>风险等方面的挑战,即使海外,金融业也从未真正将业务迁往公有云。无可奈何之下,余额宝“背水一战”,却发现胜利的果实是如此甜美。";

  CharSequence charSequence = Html.fromHtml(html);// 支持html

  show.setText(charSequence);

  show.setMovementMethod(LinkMovementMethod.getInstance());//

 

 

下面方式在真实手机上有效。

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: