我正在我的应用程序中实现RecyclerView,它正在运行。但我在Recyclerview中遇到列表项对齐问题。
实际上我的列表项有图像视图和文本视图。我需要在每个列表项之间留出一些空间。像这样
使用此相对布局,我可以获得预期的结果。但是对于我使用 RecyclerView.ItemDecoration
的项目之间的间距这是我的list_view.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#65FF0000"
android:padding="10dip" >
<ImageView
android:id="@+id/item_icon"
android:layout_width="70dip"
android:layout_height="70dip"
android:layout_centerVertical="true" />
<TextView
android:id="@+id/item_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="10dip"
android:layout_toRightOf="@+id/item_icon"
android:gravity="left"
android:textSize="24sp" />
</RelativeLayout>
试图使用RecyclerView.ItemDecoration我尝试了以下方式,但它没有用。这是我的list_item.xml代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#90FF0000"
android:orientation="horizontal"
android:weightSum="1" >
<ImageView
android:id="@+id/item_icon"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.4"
android:src="@drawable/ic_launcher" />
<TextView
android:id="@+id/item_title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="0.6"
android:text="TextView"
android:textColor="@android:color/darker_gray"
android:textSize="24dp" />
</LinearLayout>
<TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="5dp"
android:text=""
android:textColor="#90FFFFFF" />
</LinearLayout>
但是我得到了如下的观点
我在哪里犯了错误..提前致谢
答案 0 :(得分:4)
最后,我得到了我的问题的解决方案。
在我之前的RecyclerView适配器中,我使用以下类型的方法来创建列表项
public MyAdapter.ViewHolder onCreateViewHolder( ViewGroup parent,
int viewType )
{
// create a new view
itemLayoutView = LayoutInflater.from( parent.getContext() ).inflate( R.layout.list_row_serch,
null );
// create ViewHolder
ViewHolder viewHolder = new ViewHolder( itemLayoutView );
return viewHolder;
}
如下所示更改之后它正常工作。即使它是一个Releative / Linear布局
public MyAdapter.ViewHolder onCreateViewHolder( ViewGroup parent,
int viewType )
{
itemLayoutView = LayoutInflater.from( parent.getContext() ).inflate( R.layout.list_row_serch,
parent,
false );
// create ViewHolder
ViewHolder viewHolder = new ViewHolder( itemLayoutView );
return viewHolder;
}
答案 1 :(得分:1)
我从您的问题中了解到,您希望RecyclerView
项看起来像这样:
这是一个简单的布局,可以创建这种外观(使用RelativeLayout
):
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="10dip">
<ImageView
android:id="@+id/user_avatar"
android:layout_width="70dip"
android:layout_height="70dip"
android:layout_centerVertical="true"/>
<TextView
android:id="@+id/username"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="10dip"
android:layout_toRightOf="@+id/user_avatar"
android:gravity="left"/>
</RelativeLayout>
以下是使用LinearLayout
的版本:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:padding="10dip">
<ImageView
android:id="@+id/user_avatar"
android:layout_width="70dip"
android:layout_height="70dip"
android:layout_gravity="center_vertical"/>
<TextView
android:id="@+id/username"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dip"
android:layout_gravity="center_vertical"
android:gravity="left"/>
</LinearLayout>
如果您想要两个RecyclerView
项之间的空格,则无需在TextView
padding
,只需将list_item.xml
添加到主容器中
答案 2 :(得分:0)
您需要使列表项填充其父级的整个宽度。
如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#90FF0000"
android:orientation="horizontal">
<ImageView
android:layout_weight="1"
android:id="@+id/item_icon"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher" />
<TextView
android:layout_weight="1"
android:id="@+id/item_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="TextView"
android:textColor="@android:color/darker_gray"
android:textSize="24dp" />
<TextView
android:layout_weight="1"
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="5dp"
android:text=""
android:textColor="#90FFFFFF" />
</LinearLayout>
</LinearLayout>