以编程方式为RecycerView Android中的项目设置重力

Pha*_*ung 4 android gravity android-recyclerview

我正在使用RecyclerView Android与左/右消息框建立聊天行.我想将重力设置为RecyclerView的项目.通常情况下,我将itemView转换为LinearLayout,然后为它设置ParamLayout重力.但是如果使用RecyclerView,似乎不适合强制转换为LinearLayout.它将返回RecyclerView.LayoutParams.因为:

RecyclerView子级的LayoutParams子类.鼓励自定义布局管理器创建自己的LayoutParams类的子类,以存储有关布局的任何其他所需的每子视图元数据.

我无法找到使用RecyclerView.LayoutParams设置重力的方法:| 无论如何,任何人都可以在RecyclerView中找到重力项目的方法吗?请建议我.

----------- POST SOLUTION ------------------
// 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>
Run Code Online (Sandbox Code Playgroud)

// 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
Run Code Online (Sandbox Code Playgroud)

// 3.

     private LinearLayout.LayoutParams setLayoutParamsForParent(LinearLayout.LayoutParams params, boolean position) {
        params.gravity = position ? Gravity.RIGHT : Gravity.LEFT;
         return params;
    }
Run Code Online (Sandbox Code Playgroud)

Pha*_*ung 7

问题解决了.简单地说,我使用

 LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
Run Code Online (Sandbox Code Playgroud)

代替

RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) holder.llGrandParent.getLayoutParams();
Run Code Online (Sandbox Code Playgroud)

然后通常为LinearLayout Params设置重力.