在Android中,要實現RecyclerView中的文字滾動,可以使用自定義的TextView來實現。以下是一個簡單的實現方法:
MarqueeTextView
,并在構造函數中設置文本滾動的屬性:public class MarqueeTextView extends AppCompatTextView {
public MarqueeTextView(Context context) {
super(context);
init();
}
public MarqueeTextView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public MarqueeTextView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
private void init() {
setSingleLine(true);
setEllipsize(TextUtils.TruncateAt.MARQUEE);
setMarqueeRepeatLimit(-1); // 設置滾動次數,-1表示無限循環
setFocusable(true);
setFocusableInTouchMode(true);
}
}
MarqueeTextView
:<com.example.yourpackage.MarqueeTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="這里是需要滾動的文字" />
MarqueeTextView
添加到ViewHolder中,并設置文本內容:public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
// ...其他代碼
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
holder.marqueeTextView.setText("這里是需要滾動的文字");
}
public static class MyViewHolder extends RecyclerView.ViewHolder {
MarqueeTextView marqueeTextView;
public MyViewHolder(View itemView) {
super(itemView);
marqueeTextView = itemView.findViewById(R.id.marquee_text_view);
}
}
}
這樣,當文本內容超過MarqueeTextView
的寬度時,文字就會自動滾動。注意,為了讓文字滾動生效,需要確保MarqueeTextView
獲得焦點。