【发布时间】:2015-04-03 04:15:25
【问题描述】:
我正在使用 RecyclerView Android 与左/右消息框进行聊天。我想将重力设置为 RecyclerView 的项目。通常,我将 itemView 转换为 LinearLayout,然后为其设置 ParamLayout 重力。但是如果是RecyclerView,投到LinearLayout好像不太对劲。它将返回 RecyclerView.LayoutParams。因为:
RecyclerView 的子类的LayoutParams 子类。自定义布局 鼓励管理人员创建自己的子类 LayoutParams 类来存储任何额外需要的每个子视图 有关布局的元数据。
而且我找不到使用 RecyclerView.LayoutParams 设置重力的方法:| 无论如何,任何人都可以在 RecyclerView 中找到重力项目的方法吗?请建议我。
-----------后解决方案------
//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;
}
【问题讨论】:
标签: android android-recyclerview gravity