Я создаю пользовательский интерфейс списка размеров текста, который будет иметь разные размеры рендеринга одного и того же текста в RecyclerView
.
Требование состоит в том, чтобы текстовый элемент, отображаемый в RecyclerView, отображался снизу представления, а его рендеринг — сверху. Вот мой код:
Объявление RecyclerView:
<RelativeLayout
android:id = "@+id/sizes_layout"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:layout_marginTop = "50dp"
android:elevation = "30dp"
android:paddingVertical = "10dp"
app:layout_constraintBottom_toBottomOf = "parent"
app:layout_constraintEnd_toEndOf = "parent"
app:layout_constraintStart_toStartOf = "parent"
app:layout_constraintTop_toTopOf = "parent">
<RelativeLayout
android:id = "@+id/size_options"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:layout_below = "@+id/subtitles"
android:layout_gravity = "center_horizontal"
android:layout_marginHorizontal = "20dp"
android:layout_marginTop = "16dp"
android:orientation = "horizontal">
<TextView
android:id = "@+id/size_textview"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:drawablePadding = "16dp"
android:gravity = "center_vertical"
android:minWidth = "50dp"
android:text = "@string/size"
android:textColor = "@color/white"
android:textStyle = "bold"
tools:textColor = "@color/black" />
<androidx.recyclerview.widget.RecyclerView
android:id = "@+id/text_track_size_list_view"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:layout_toEndOf = "@+id/size_textview"
android:orientation = "horizontal"
app:layoutManager = "androidx.recyclerview.widget.LinearLayoutManager" />
</RelativeLayout>
</RelativeLayout>
Просмотр объявления элемента:
<?xml version = "1.0" encoding = "utf-8"?>
<FrameLayout xmlns:android = "http://schemas.android.com/apk/res/android"
xmlns:tools = "http://schemas.android.com/tools"
android:id = "@+id/focus_view"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:layout_marginHorizontal = "10dp">
<TextView
android:id = "@+id/row_item"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:gravity = "bottom"
android:paddingHorizontal = "10dp"
android:paddingVertical = "7dp"
android:textAllCaps = "false"
android:textColor = "@drawable/text_size_color"
tools:text = "Aa" />
</FrameLayout>
Метод держателя привязки вида:
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val textSizeOption: TextSizeOption = extSizeOptions[position]
holder.focusView.tag = textSizeOption
holder.rowItem.textSize = textSizeOption.fontSize
if (mSelectedFormat != null && mSelectedFormat == textSizeOption.id) {
holder.focusView.isSelected = true
} else {
holder.focusView.isSelected = (position == 0 && mSelectedFormat == null)
}
}
Я пробовал несколько вещей, таких как обертывание представления элемента в относительном макете и предоставление alignParentBottom и т. д., но это тоже не сработало.
Вот скриншот того, как это выглядит сейчас: Выравнивание текста по верхнему краю
Даже метка размера не выравнивается по центру, как указано в коде. Не уверен, что я что-то упустил, но любая помощь будет очень признательна
Подобное изменение элемента просмотра решит вашу проблему.
<?xml version = "1.0" encoding = "utf-8"?>
<LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"
android:id = "@+id/focus_view"
android:layout_width = "wrap_content"
android:layout_height = "match_parent"
android:layout_marginHorizontal = "10dp"
android:orientation = "horizontal">
<TextView
android:layout_gravity = "center_vertical"
android:id = "@+id/row_item"
android:layout_width = "0dp"
android:layout_height = "wrap_content"
android:layout_weight = "1"
android:textColor = "@drawable/text_size_color"
android:text = "Aa" />
</LinearLayout>
Не беспокойтесь, я исправил 2-ю проблему. Спасибо
Спасибо, @shreehari-k, это прекрасно решает проблему. Другая проблема, с которой я все еще сталкиваюсь, заключается в том, что текст
Size
не выравнивает WRT по центру RecyclerView, как я могу это исправить? Спасибо за помощь!!