2017-01-01 83 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