android RecyclerView中Item的TextView跑马灯效果

本文详细介绍了如何在Android应用中为TextView设置跑马灯滚动效果,包括必要的XML属性配置及ViewHolder中TextView的设置方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

设置方法:

1.设置xml,添加以下属性

android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:scrollHorizontally="true"

注意:不要添加 android:selectAllOnFocus="true" ,如果添加,虽然也会有跑马灯效果,但会出现点点点

2.在ViewHolder中设置TextView

textView.setSelected(true);

 

RecyclerView 跑马灯效果可以通过自定义 RecyclerView.Adapter 实现。具体步骤如下: 1. 在 RecyclerView.Adapter 中定义一个 ViewHolder,用来显示跑马灯效果的 View。 2. 在 onCreateViewHolder() 方法中初始化 ViewHolder,并将其返回。 3. 在 onBindViewHolder() 方法中为 ViewHolder 中的 View 赋值,并实现跑马灯效果。 以下是一个简单的示例代码: ```java public class MarqueeAdapter extends RecyclerView.Adapter<MarqueeAdapter.MarqueeViewHolder> { private List<String> mData; public MarqueeAdapter(List<String> data) { mData = data; } @NonNull @Override public MarqueeViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_marquee, parent, false); return new MarqueeViewHolder(itemView); } @Override public void onBindViewHolder(@NonNull MarqueeViewHolder holder, int position) { // 设置跑马灯效果 holder.mTextView.setSelected(true); holder.mTextView.setText(mData.get(position % mData.size())); } @Override public int getItemCount() { return Integer.MAX_VALUE; } static class MarqueeViewHolder extends RecyclerView.ViewHolder { TextView mTextView; public MarqueeViewHolder(@NonNull View itemView) { super(itemView); mTextView = itemView.findViewById(R.id.tv_marquee); } } } ``` 其中,item_marquee.xml 中的 TextView 需要设置以下属性: ```xml <TextView android:id="@+id/tv_marquee" android:layout_width="wrap_content" android:layout_height="wrap_content" android:singleLine="true" android:ellipsize="marquee" android:focusable="true" android:focusableInTouchMode="true" android:marqueeRepeatLimit="marquee_forever" /> ``` 这样就可以实现 RecyclerView 中的跑马灯效果了。需要注意的是,getItemCount() 方法需要返回一个足够大的数值,保证 RecyclerView 能够无限滚动。在 onBindViewHolder() 方法中,需要对 position 取模,以保证数据源中的数据能够循环滚动。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值