2017-01-01 59 views
0

我有一个RecyclerView(ytRC),并且在RecyclerView中,每个元素都有一个缩略图和一个相应的标题,通过一个适配器(ResultsAdapter)进入RecyclerView内部,并将标题转换为卡片视图。我想在卡片视图中将我的标题放在一行中,这很简单。但是,一些标题太长,所以它们会被切断。我认为一个字幕textview将是一个很好的方法来解决这个问题,所以我去寻找一个解决方案。android-根据需要在每个RecyclerView元素中滚动TextView

我发现了一些结果,如thisthis。但是,这些解决方案只能部分工作,这意味着RecyclerView的50个元素中只有1个实际滚动,因为它们的长度需要滚动。我认为这是因为我在ResultsAdapteronBindViewHolder()方法中调用title.setEnabled(true);title.requestFocus();,并且仅在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

选取框简单滚动长的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