如何在底部的 RecyclerView 中对齐文本视图的文本
How to align text of textview in RecyclerView at the bottom
我正在创建一个文本大小列表 UI,它将在 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 等,但效果不佳。
这是它现在的样子的截图:
Sizes text top aligning
甚至尺寸标签也没有像代码中给出的那样居中对齐。不确定我是否遗漏了什么,但我们将不胜感激
像这样修改您的视图项目将解决您的问题
<?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>
我正在创建一个文本大小列表 UI,它将在 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 等,但效果不佳。
这是它现在的样子的截图: Sizes text top aligning
甚至尺寸标签也没有像代码中给出的那样居中对齐。不确定我是否遗漏了什么,但我们将不胜感激
像这样修改您的视图项目将解决您的问题
<?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>