问题:使用TextView实现文字从右到左滚动显示,属性设置可在布局文件和代码文件中设置,经过多次试验,在布局文件中设置其属性无法实现滚动效果。

Android版本:9

在手机上调试需打开USB调试(仅安卓机)

一、使用TextView实现文字从右到左滚动显示

TextView实现滚动显示的属性:
android:marqueeRepeatLimit="marquee_forever"

在代码中设置的属性(因为在布局文件中设置无效)

textView.setMovementMethod(LinkMovementMethod.getInstance());
        textView.setEllipsize(TextUtils.TruncateAt.MARQUEE);
        textView.setSingleLine(true);
        textView.setSelected(true);
        textView.setFocusable(true);
        textView.setFocusableInTouchMode(true);

通过以上的属性设置,即可实现TextView文字滚动!

二、在此基础上实现文字滚动过程中,点击关键词实现跳转网页。

这个可以在显示的数据中设置

例如:
显示的文本数据为:
安卓是一种基于Linux内核(不包含GNU组件)的自由及开放源代码的操作系统。主要使用于移动设备,如智能手机和平板电脑,由美国Google公司和开放手机联盟领导及开发。Android操作系统最初由Andy Rubin开发,主要支持手机。2005年8月由Google收购注资。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随后Google以Apache开源许可证的授权方式,发布了Android的源代码。

在文本的“智能手机”前后加上链接如下:

安卓是一种基于Linux内核(不包含GNU组件)的自由及开放源代码的操作系统。主要使用于移动设备,如<a href = ‘https://baike.baidu.com/item/%E6%99%BA%E8%83%BD%E6%89%8B%E6%9C%BA’智能手机和平板电脑,由美国Google公司和开放手机联盟领导及开发。Android操作系统最初由Andy Rubin开发,主要支持手机。2005年8月由Google收购注资。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随后Google以Apache开源许可证的授权方式,发布了Android的源代码。

注意:链接需使用单引号

三、完整代码如下:

布局:

package com.example.textview_paomadeng;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.text.Html;
import android.text.TextUtils;
import android.text.method.LinkMovementMethod;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    private TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView = (TextView)this.findViewById(R.id.New);
        String html = "据中国日报,当地时间6月23日,加拿大不列颠哥伦比亚省高等法院和<a href = 'https://baike.baidu.com/item/%E5%AD%9F%E6%99%9A%E8%88%9F/131792?fr=aladdin'>孟晚舟</a>引渡案的控、辩双方达成共识,对引渡案的全部日程进行确认,同意于8月17日恢复引渡听证会,对加拿大和美国当局提供的信息的证据可采纳性进行讨论;而关于美加是否滥用司法程序的辩论将于2021年2月16日开始。";
        CharSequence charSequence = Html.fromHtml(html);
        textView.setText(charSequence);
        textView.setMovementMethod(LinkMovementMethod.getInstance());
        textView.setEllipsize(TextUtils.TruncateAt.MARQUEE);
        textView.setSingleLine(true);
        textView.setSelected(true);
        textView.setFocusable(true);
        textView.setFocusableInTouchMode(true);
    }
}

Java:

public class MainActivity extends AppCompatActivity {
    private TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView = (TextView)this.findViewById(R.id.New);
        String html = "据中国日报,当地时间6月23日,加拿大不列颠哥伦比亚省高等法院和<a href = 'https://baike.baidu.com/item/%E5%AD%9F%E6%99%9A%E8%88%9F/131792?fr=aladdin'>孟晚舟</a>引渡案的控、辩双方达成共识,对引渡案的全部日程进行确认,同意于8月17日恢复引渡听证会,对加拿大和美国当局提供的信息的证据可采纳性进行讨论;而关于美加是否滥用司法程序的辩论将于2021年2月16日开始。";
        CharSequence charSequence = Html.fromHtml(html);
        textView.setText(charSequence);
        textView.setMovementMethod(LinkMovementMethod.getInstance());
        textView.setEllipsize(TextUtils.TruncateAt.MARQUEE);
        textView.setSingleLine(true);
        textView.setSelected(true);
        textView.setFocusable(true);
        textView.setFocusableInTouchMode(true);
    }
}

四、运行结果如下:

运行后的效果:

android studio 滚动 android studio滚动布局_android studio 滚动

点击后的效果:

android studio 滚动 android studio滚动布局_android_02


在最后可加入更多的TextView以实现新闻浏览的效果;也可加入更多的效果!(下期试试改一下)