在TextView中实现无限滚动长文本的方法有多种,以下是其中一种常见的实现方式:
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();
}
}
<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" />
InfiniteScrollTextView textView = findViewById(R.id.infinite_scroll_textview);
textView.startScroll(); // 启动滚动
textView.stopScroll(); // 停止滚动
这样就可以在TextView中实现无限滚动长文本的效果了。
推荐的腾讯云相关产品:腾讯云移动直播(https://cloud.tencent.com/product/mlvb)可以用于在移动端实现直播功能,适用于音视频相关的应用场景。
领取专属 10元无门槛券
手把手带您无忧上云