首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在TextView中无限滚动长文本

在TextView中实现无限滚动长文本的方法有多种,以下是其中一种常见的实现方式:

  1. 使用自定义的TextView子类来实现无限滚动效果。可以创建一个名为InfiniteScrollTextView的类,继承自TextView,并重写其onDraw()方法。
代码语言:txt
复制
public class InfiniteScrollTextView extends TextView {
    private float textWidth;
    private float viewWidth;
    private float step = 0.5f;
    private float currentX = 0f;
    private boolean isScrolling = true;

    public InfiniteScrollTextView(Context context) {
        super(context);
    }

    public InfiniteScrollTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public InfiniteScrollTextView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        if (isScrolling) {
            textWidth = getPaint().measureText(getText().toString());
            viewWidth = getWidth();
            if (currentX > viewWidth) {
                currentX = -textWidth;
            }
            currentX += step;
            canvas.drawText(getText().toString(), currentX, getBaseline(), getPaint());
            invalidate();
        } else {
            super.onDraw(canvas);
        }
    }

    public void startScroll() {
        isScrolling = true;
        invalidate();
    }

    public void stopScroll() {
        isScrolling = false;
        invalidate();
    }
}
  1. 在布局文件中使用自定义的InfiniteScrollTextView。
代码语言:txt
复制
<com.example.InfiniteScrollTextView
    android:id="@+id/infinite_scroll_textview"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Your long text here"
    android:singleLine="true"
    android:ellipsize="marquee"
    android:focusable="true"
    android:focusableInTouchMode="true"
    android:marqueeRepeatLimit="marquee_forever"
    android:scrollHorizontally="true"
    android:padding="10dp"
    android:textSize="16sp" />
  1. 在代码中启动和停止滚动。
代码语言:txt
复制
InfiniteScrollTextView textView = findViewById(R.id.infinite_scroll_textview);
textView.startScroll(); // 启动滚动
textView.stopScroll(); // 停止滚动

这样就可以在TextView中实现无限滚动长文本的效果了。

推荐的腾讯云相关产品:腾讯云移动直播(https://cloud.tencent.com/product/mlvb)可以用于在移动端实现直播功能,适用于音视频相关的应用场景。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【Android】TextView的跑马灯效果

2.gif 说明 TextView的跑马灯效果也就是指当你只想让TextView单行显示,可是文本内容却又超过一行时,自动从左往右慢慢滑动显示的效果就叫跑马灯效果。...另外,最近在学习竖直方向循环滚动显示的TextView,等理解掌握透了后也会记录下来。好了,话不多说,看代码。...android:focusable="true" //跑马灯启动的条件之一 android:marqueeRepeatLimit="-1" //设置循环几次,-1表示无限循环 ?...TextView得是单行显示,还必须可以获取焦点,这样当TextView获取焦点后跑马灯效果才会启动,最上面动图里的第二个TextView。...代码如下: /** * 跑马灯效果的TextView, 使用方式: * 启动/关闭:{@link #setMarqueeEnable(boolean)} * xml文件记得设置:android:

5K60

常用控件之TextView全解析

在前几篇文章里,我们详细介绍了Android的常用布局,使大家对Android的页面布局有了一定认识,而对于布局中使用的一些UI控件Button、TextView等,有的读者可能还存在一些困惑。...在接下来文章,我们将详细介绍Android开发中经常使用的UI控件,敬请期待! 简介 TextView(文本框),是Android中用于显示文本的一个控件。 常用属性详解 ?...下面详细列举TextView在XML各种属性,供大家参考查阅。 android:text:设置显示文本内容。 android:textColor:设置文本颜色。...android:marqueeRepeatLimit:在ellipsize指定marquee的情况下,设置重复滚动的次数,当设置为marquee_forever时表示无限次。...”1.2”。 android:scrollHorizontally:设置文本超出TextView的宽度的情况下,是否出现横拉条。

2K20

Android TextView 属性大全

Android 我们知道有一个使用频率非常高的控件,它就是 TextView,但是它的属性特别多,今天我们就来探究下,它都有哪些属性。...android:inputType设置文本的类型,用于帮助输入法显示合适的键盘类型。在EditView再详细说明,这里无效果。...android:marqueeRepeatLimit在ellipsize指定marquee的情况下,设置重复滚动的次数,当设置为marquee_forever时表示无限次。...”1.2” android:numeric如果被设置,该TextView有一个数字输入法。此处无用,设置后唯一效果是TextView有点击效果,此属性在EdtiView将详细说明。...android:selectAllOnFocus如果文本是可选择的,让他获取焦点而不是将光标移动为文本的开始位置或者末尾位置。TextView设置后无效果。

2.5K30

一文学会所有 Android TextView 属性,妈妈再也不担心我的代码写不好了!

Android 我们知道有一个使用频率非常高的控件,它就是 TextView,但是它的属性特别多,今天我们就来探究下,它都有哪些属性。...android:inputType设置文本的类型,用于帮助输入法显示合适的键盘类型。在EditView再详细说明,这里无效果。...android:marqueeRepeatLimit在ellipsize指定marquee的情况下,设置重复滚动的次数,当设置为marquee_forever时表示无限次。...”1.2” android:numeric如果被设置,该TextView有一个数字输入法。此处无用,设置后唯一效果是TextView有点击效果,此属性在EdtiView将详细说明。...android:selectAllOnFocus如果文本是可选择的,让他获取焦点而不是将光标移动为文本的开始位置或者末尾位置。TextView设置后无效果。

1.6K20

Android实现轮播图片展示效果

加载图片资源,将图片ID存在集合,使图片能够在页面显示,(图片之所以能够在页面显示,是因为在适配器的instantiateItem方法获取了集合的图片元素) 5.图片下方的文字显示:图片下方之所以会有文字...方法中进行调用 8.图片的无限轮播的实现:可以使适配器的getCount返回值设为一个很大很大的值,同时在instantiateItem方法设置position position = position...% imageResIds.length;防止索引越界异常,这样就可以使图片无限轮播,但是此时还有一个问题就是,右边可以无限轮播,但是左边是无法无限轮播的,这个问题的解决办法是在onCreat方法设置当前选中的条目...)); //对viewPager设置监听器 viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { //当页面滚动时触发的时间...tv_desc.setText(descs[position]); changeDots(position); } //当页面状态滚动状态发生改变时触发的事件 @Override public void

1.9K10

android使用TextView实现跑马灯效果

10dp" android:layout_margin="10dp"/ </android.support.constraint.ConstraintLayout 第二步:在activity编写...textView = (TextView) findViewById(R.id.textview); String html = "1月25日上午,中共中央政治局在人民日报社就全媒体时代和媒体融合发展举行第十二次集体学习...; // CharSequence charSequence = Html.fromHtml(html); // 使文本具有html的功能,超链接 textView.setText(html)...); // 跑马灯滚动次数,此处已设置最大值 textView.setSingleLine(true); // 设置为单行显示 textView.setFocusable(true); // 获得焦点...textView.setFocusableInTouchMode(true); // 通过触碰获取焦点的能力 } } 设置textview的属性也可以直接在布局文件设定,博主在布局文件设置时出现了不能滚动的问题

1.1K31

【Android】手把手教你上滑解锁的效果

最近,公司开发的APP要实现类似上滑解锁效果的推荐页,捣腾了两天,基本实现了效果,附效果图如上。接下来和大家聊聊如何实现这样的效果。...有效上滑 如上,锁屏状态下,定义有效滑动阈值standardH,若上滑高度差超过standardH,则判断为有效滑动,布局滑动至屏幕顶部(不可见);否则向下滑动、向上滑动距离不够等,都作为无效滑动...流畅滚动 LinearLayout本身是没有smoothScrollTo方法的,仅有的滚动方法只有scrollTo和scrollBy,但是这种滚动方法是突变的,不是线性的,想要实现smoothScrollTo...textView = (TextView) getView(viewId); textView.setText(charSequence); } /** * 设置文本颜色 * @param...(TextView) getView(viewId); textView.setTextColor(color); } /** * 设置文本字体大小 * @param viewId *

2.6K20

【Android从零单排系列四十六】《Android自定义ListView的实现方法》

前言 小伙伴们,在前面的文章,我们谈到了Android开发的自定义view的基本概念及方法等,本文我们实际举例自定义一个ListView。...一  ListView 介绍 ListView 是 Android 的经典列表控件,用于展示一组垂直滚动的项目。...支持多种布局样式:可以通过自定义适配器来定制每个列表项的布局,包括单行文本、图文混排等。...缺乏内置的交互效果:ListView 没有内置的交互效果,滑动删除、侧滑菜单等。如果需要添加这些常见的交互效果,需要编写自定义的触摸事件处理逻辑或使用第三方库。...例如,我们可以在布局中放置一个 TextView 来显示文本: <!

30220

Android最常用的控件ListView(详解)

Position: 指的是adapter的某一项的位置,点击了listview第2项,而第2项对应 的是adapter的第2个数值,那此时position的值就为1了。...三.定制 ListView 界面 只能显示一段文本的listview太单调了,我们现在就来对listview的界面进行定制,让其丰富内容。...四.提升ListView的运行效率 目前我们ListView的运行效率是很低的,因为在FruitAdapter的 getView()方法,每次都将布局重 新加载了一遍,将快速滚动的时候,...fruitname; TextView fruitprice; } } 五.ListView的点击事件 ListView的滚动毕竟只是满足 了我们视觉上的效果,下面我们来学习...您选择的水果是:"+fruit.getName(),Toast.LENGTH_LONG).show(); } }); 六.总结 七.参考资料 点击免费下载 发布者:全栈程序员栈

1.5K10

记一次代码中毒急救

那再改改,根据长按的坐标,找到对应的文本TextView 第几个字,找到这个字在第几行,找到这行文字的顶部坐标再减去行间距,再把悬浮操作菜单。...结果又发现如果 TextView 在一个 Scrollview 里面的时候,如果 Scrollview 发生滚动,悬浮窗应该自动 dismiss; 那再改改,滚动状态获取不到啊,那不如让 TextView...在初始化的时候递归遍历父控件,如果是可以滚动的控件就给这个控件添加一个滚动状态监听器,发生滚动直接 dismiss 悬浮窗。...第三步:抽出 SelectionInfo,封装高亮显示的文本信息,包括文本的起始坐标,结束坐标,文本长度,高亮的背景颜色,在整个 TextView 文本的位置等。 ?...最后 从改为使用 PopupWindow 开始,我们已经解决了界面TextView 弹出多个悬浮窗的问题。

84920

【Android从零单排系列二十六】《Android视图控件——ScrollView》

ScrollView可以嵌套其他视图组件,例如TextView、ImageView等,以实现滚动展示更多内容。它对于需要显示较长文本、图片或其他可滚动内容的界面非常有用。...在ScrollView,只能包含一个直接子视图(ViewGroup),通常是一个垂直方向的线性布局或相对布局。如果需要水平滚动效果,可以使用HorizontalScrollView作为替代。...二 ScrollView使用方法 在XML布局文件定义ScrollView容器。在需要可滚动内容的区域内添加ScrollView标签,并指定其宽度、高度以及其他属性。...="wrap_content" android:text="这是第一行文本。"...:layout_height="wrap_content" android:text="这是最后一行文本。"

36520

【iOS 开发】基本 UI 控件详解 (UIButton | UITextField | UITextView | UISwitch)

- E-mail Address : E-mail 地址虚拟键盘; -- Decimal Pad : 数字 小数点 虚拟键盘; (8) Return Key 属性 Return Key 属性 : 按下文本的...UITextField 是单行文本; -- 不能触发事件 : UITextView 没有继承 UIControl 控件, 不能绑定 IBAction 事件处理方法; -- 可滚动 : UITextView...UIScrollView 属性简介 (1) UIScrollView 简介 UIScrollView 简介 :  -- 显示内容多 : 可滚动控件, 可以使用手指拖动控件的内容, 在其中可以显示多个屏幕的内容...时, 显示水平滚动条; -- Shows Vertical Indicator : 垂直滚动 ScrollView 时, 显示垂直滚动条; (4) Bounce 属性 Bounce 属性 :  --..., 如果拖动手指不能启动一个滚动事件, 会调用 touchesCancelled 方法, 建议勾选;  3.

6.6K20

Android进阶之绘制-自定义View完全掌握(二)

这样我们第一阶段的编码就完成了,接下来我们实现添加指示点,并根据页面改变设置文本。 而指示点有多种实现方式,可以通过图片来显示,也可以自己绘制指示点显示,我这种用的是第二种方式。...@Override public void onPageSelected(int position) { //设置对应页面的文本信息...这个时候,指示点和文本标题的内容都随着我们的滑动而改变,这样,我们的目的就达到了。 我们来实现第三阶段的需求,支持左右无限滑动。 怎么才能实现这个需求呢?...滑动的页面数量是由适配器的getCount方法决定的,所以,我们在getCount方法里直接返回Integer.MAX_VALUE,这是int的最大值,这个数量已经非常庞大了,可以说近似于无限滑动,但是设置如此大的数量...position) { int realPosition = position % imageViews.size(); //设置对应页面的文本信息

43140
领券