Как сделать серым пару последних видимых элементов [RecyclerView]? - PullRequest
0 голосов
/ 09 апреля 2020

Как сделать так, чтобы последние видимые элементы вида переработчика имели немного другой стиль. Например, я хотел бы, чтобы они выглядели так:

Как вы можете видеть, последние 3 элемента отображаются серым цветом пропорционально. Я искал inte rnet, но безуспешно. Любые предложения будут ценны!

Ответы [ 2 ]

0 голосов
/ 09 апреля 2020

Вы можете создать собственный макет 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
    }
}
0 голосов
/ 09 апреля 2020

Узнайте размер списка, который вы используете для заполнения представления recyler, возможно, это было установлено в конструкторе адаптера. Я назову это myList.

, тогда в вашем onBindViewHolder что-то вроде:

 @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 - это TextView элемент

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...