我正在使用RecyclerView Android制作带有左/右消息框的聊天界面。我想将项目的重力设置为RecyclerView中的项。通常情况下,我会将itemView转换为LinearLayout,然后为其设置ParamLayout重力。但是,在RecyclerView中,这样做似乎不正确。它将返回RecyclerView.LayoutParams。原因是:
-----------发布解决方案------------------
//1. RecyclerView的子项
我找不到用RecyclerView.LayoutParams设置重力的方法 :| 无论如何,能否有人找到在RecyclerView中设置item重力的方法?请给我建议。LayoutParams是RecyclerView子项的子类。建议自定义布局管理器创建自己的LayoutParams子类来存储与布局有关的每个子视图所需的任何其他元数据。
-----------发布解决方案------------------
//1. RecyclerView的子项
<LinearLayout
android:id="@+id/id_grandparent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:divider="@android:color/transparent"
android:gravity="left"
android:orientation="vertical">
<LinearLayout
android:id="@+id/id_llparent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/bg_customer_feedback_left"
android:gravity="left"
android:orientation="vertical">
</LinearLayout>
//2. OnBindView()
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
params = setLayoutParamsForParent(params, item.isPosition());
holder.llParentLayout.setLayoutParams(params); //corresponding to id_llparent ID
//3.
private LinearLayout.LayoutParams setLayoutParamsForParent(LinearLayout.LayoutParams params, boolean position) {
params.gravity = position ? Gravity.RIGHT : Gravity.LEFT;
return params;
}