java - 如何将分隔线更新到 RecyclerView 中的正确位置?
问题描述
我写了以下布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<ImageView
android:id="@+id/avatar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="15dp" />
<TextView
android:id="@+id/full_name"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_toRightOf="@id/avatar"
android:layout_toEndOf="@id/avatar"
android:textSize="20sp"
android:textColor="@color/blackColor"
android:layout_centerVertical="true" />
<!-- Divider -->
<View
android:id="@+id/divider"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_below="@+id/avatar"
android:layout_centerVertical="true"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp" />
</RelativeLayout>
这是 RecyclerView 的项目布局。基本上它创建以下布局:
[avatar] [name]
---------------------
[avatar] [name]
---------------------
[avatar] [name]
Java 代码:
public void onBindViewHolder(ViewHolder holder, int position) {
// Code
// Set avatar
// Set name
holder.fullname.setText((CharSequence) name);
// Set visible/invisible divider
if (position < getItemCount() - 1) {
holder.viewDivider.setVisibility(View.VISIBLE);
} else {
holder.viewDivider.setVisibility(View.GONE);
}
}
问题是分隔线设置在每个块的顶部ImageView
而TextView
不是底部。我想我理解它为什么会发生 - 分隔线已经在那里,所以当我动态设置时ImageView
,TextView
分隔线没有被渲染到正确的位置。或者它可能与android:layout_centerVertical
?我应该如何解决它?
此外,在设置我调用的适配器的活动中:
holder.users.setLayoutManager(new LinearLayoutManager(this.activity));
LinearLayoutManager
当(项目的)布局是时我可以打电话RelativeLayout
吗?
解决方案
<!-- Divider -->
<View
android:id="@+id/divider"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_below="@+id/avatar"
android:layout_centerVertical="true" <-- REMOVE THIS LINE :)
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp" />
推荐阅读
- facebook - 为什么在调用 facebook embed api 时会显示错误?
- c++ - O(n2) ,如何优化两个循环?
- spring-boot - 使用 JWT 的基于角色的授权 - Spring 安全性
- python - Heroku postgresql 数据库中不存在列
- sql - 带有条件 sql 的行号
- spring - 如何将 DeltaSpike @WindowScoped 带注释的 bean 移植到 Spring 框架?
- r - 矩阵列表
- python-3.x - python asyncio http服务器中的请求大小限制
- amazon-web-services - 如何使用 s3 和 cloudflare 设置子域?
- airflow-scheduler - Airflow Bashoperator SSH commnad 的工作原理