2017-01-01 2 views
0

У меня есть RecyclerView (ytRC), и внутри этого RecyclerView каждый элемент имеет миниатюру и соответствующий заголовок, который попадает внутрь RecyclerView через адаптер (ResultsAdapter), который помещает миниатюру и название в картотеке. Я хочу сделать свой заголовок в кард-листе одной строкой, что достаточно просто. Но некоторые заголовки слишком длинны, поэтому их обрезают. Я думал, что текстовое представление marquee будет отличным способом исправить это, поэтому я пошел искать решение.android - Прокрутка TextView в каждом элементе RecyclerView по мере необходимости

Я нашел некоторые результаты, такие как this и this. Но эти решения только частично работали, а это означает, что только 1 из 50 элементов в RecyclerView фактически прокручивается, что нужно прокручивать из-за их длины. Я думаю, что это произошло потому, что я вызывал title.setEnabled(true); и title.requestFocus(); в методе onBindViewHolder()ResultsAdapter, и текст только маркировался только при создании определенного вида в RecyclerView.

Другим решением, которое я хотел бы попробовать было создать пользовательский класс TextView ScrollingTextView:

import android.content.Context; 
import android.support.annotation.Nullable; 
import android.util.AttributeSet; 


public class ScrollingTextView extends android.support.v7.widget.AppCompatTextView { 
public ScrollingTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { 
    super(context, attrs, defStyleAttr); 
    init(); 
} 

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

private void init() { 
    //set scrolling 
    setSelected(true); 
    requestFocus(); 
} 
} 

Но, используя этот класс дает те же результаты. Итак, как я могу поменять текст в каждом элементе RecyclerView, который имеет слишком много текста?

ответ

1

Marquee просто для прокрутки длинного TextView

<TextView 
    android:text="lunch 20.00 | Dinner 60.00 | Travel 60.00 | Doctor 5000.00 | lunch 20.00 | Dinner 60.00 | Travel 60.00 | Doctor 5000.00" 
    android:id="@+id/TextView02" 
    android:layout_width="200dip" 
    android:layout_height="wrap_content" 
    android:marqueeRepeatLimit="marquee_forever" 
    android:ellipsize="marquee" 
    android:singleLine="true" 
    android:focusable="true" 
    android:inputType="text" 
    android:maxLines="1"> 
</TextView> 

И в программе

holder.textView.setSelected(true); 

Это aoutomatically прокручивать длинный текст в TextView.

+0

Спасибо, это сработало! Я не знаю, почему другие ответы не оправдали меня. В любом случае, атрибут 'inputType', который вы включили в действительности не нужен, и прокрутка работает отлично! – rakeshdas

Смежные вопросы