如何使[RecyclerView]的最后几个可见项目变灰?

时间:2020-04-09 10:34:15

标签: android android-recyclerview

如何使回收器视图的最后可见项目具有略有不同的样式。例如,我希望它们显示如下:

如您所见,最后3个项目按比例变灰。我搜索了互联网,但没有成功。任何建议将不胜感激!

2 个答案:

答案 0 :(得分:0)

找出用于填充recyler视图的列表的大小,这可能是在适配器构造函数中设置的。我称它为myList。

然后在您的 @Override public void onBindViewHolder(ViewHolder holder, int position) { .... if (myList.size() - position < 3) { holder.wordRow.setTextColor(this.mContext.getResources().getColor(R.color.light_gray)); } 中输入以下内容:

wordRow

TextViewquote=''元素的地方

答案 1 :(得分:0)

您可以创建自定义的recyclerView布局,然后将topFadingEdgeLength设置为0.0。这样一来,您只能在最下方显示效果,否则也可以应用于最上方。

使用您的XML

    <com.example.BottomFadeEdgeRecyclerView
                android:id="@+id/recyclerView"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:fadingEdge="vertical"
                android:fadingEdgeLength="180dp"
                android:requiresFadingEdge="vertical">

    </com.example.BottomFadeEdgeRecyclerView>

我已将fadingEdgeLength设置为180dp。您可以设置所需的值

还有自定义视图类

import android.content.Context
import android.util.AttributeSet
import androidx.recyclerview.widget.RecyclerView

class BottomFadeEdgeRecyclerView : RecyclerView {
    constructor(context: Context) : super(context)
    constructor(context: Context, attrs: AttributeSet?) : super(context, attrs)
    constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr)

    override fun getTopFadingEdgeStrength(): Float {
        return 0.0f
    }
}

您可以创建自定义的scrollView布局,然后将topFadingEdgeLength设置为0.0。这样一来,您只能在最下方显示效果,否则也可以应用于最上方。

您可以使用scrollView包装您的recyclerView

在XML中,如下所示设置您的scrollView

    <com.example.BottomFadeEdgeScrollView
                android:id="@+id/scrollView"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:fadingEdge="vertical"
                android:fadingEdgeLength="180dp"
                android:requiresFadingEdge="vertical">

           <androidx.recyclerview.widget.RecyclerView
                android:id="@+id/recyclerView"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />

    </com.example.BottomFadeEdgeScrollView>

我已将fadingEdgeLength设置为180dp。您可以设置所需的值

这是Kotlin中的文件

import android.content.Context
import android.util.AttributeSet
import android.widget.ScrollView

class BottomFadeEdgeScrollView : ScrollView {
    constructor(context: Context?) : super(context)
    constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs)
    constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr)

    override fun getTopFadingEdgeStrength(): Float {
        return 0.0f
    }
}