Как сделать селектор из recyclerview?

#android #android-recyclerview #selector

#Android #android-recyclerview #селектор

Вопрос:

Мне нужно сделать селектор дня, как на скриншоте ниже.

введите описание изображения здесь

Проблема в раскраске чисел. Мне нужны белые числа, пока они находятся в круге.

Я решил сделать это с помощью 2 recyclerview, которые синхронизированы друг с другом. В одном recyclerview элементы черного цвета, а в другом — белого.

введите описание изображения здесь

Но нет способа объединить их вместе, чтобы получить желаемый результат. Пожалуйста, дайте мне представление о правильной реализации этого.

Если бы можно было придать виду recyclerview форму круга, это решило бы мою проблему. Но, похоже, у recyclerview нет этой функции.

Ответ №1:

Да, вы можете придать элементам представления recycler форму круга, выполнив следующие шаги 1: Создайте framelayout 2: Поместите cardview внутри него. 3. Добавьте приложение: cardCornerRadius =»150dp» в режиме просмотра карты. 4: Добавьте textview внутрь

  <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_margin="4dp"

            >
           <androidx.cardview.widget.CardView
                android:padding="10dp"
                android:layout_margin="1dp"
                android:id="@ id/crd"
                    android:layout_width="match_parent"
                android:layout_height="match_parent"
                app:cardCornerRadius="150dp">

                   <TextView
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:layout_centerHorizontal="true"
                      android:text="4"
                       android:textColor="#000"
                       android:gravity="center"
                    android:layout_centerVertical="true"
                    android:id="@ id/colorBox"

                    />


        </androidx.cardview.widget.CardView>


    </FrameLayout> 

вывод хотел бы b: Вывод

Комментарии:

1. Я знаю способ придать элементу переработчика форму круга. Но мне интересно, возможно ли придать форму круга всему reyclerview.

Ответ №2:

используйте Model для RecyclerView и обрабатывайте состояние внутри него. внесите одно логическое значение в модель, и если выбрана дата, сделайте ее истинной, иначе сделайте ее ложной и уведомите адаптер. Внутри адаптера, если флаг имеет значение true, сделайте текстовое поле даты белым, а остальное черным

 class Model {
  String date;
  boolean isSelected;
  //....
  
  public boolean isSelected(){
    return isSelected;
  }

  public void setSelected(boolean isSelected){
    this.isSelected = isSelected;
  }
}
 

внутри onBindViewHolder() адаптера

 if (modelList.get(position).isSelected())
    holder.textBoxDate.setTextColor(ContextCompat.getColor(context, R.color.white));
else
    holder.textBoxDate.setTextColor(ContextCompat.getColor(context, R.color.black));
 

для получения дополнительной информации в Google «как управлять выбранным состоянием в recyclerview Android»

Комментарии:

1. Это было бы слишком просто. Мне нужна частичная раскраска символов. Как вы можете видеть на втором скриншоте, часть символа «2» серая внутри круга, а другая часть символа «2» черная за пределами круга.