【问题标题】:android How to set Gravity in RecyclerViewandroid 如何在 RecyclerView 中设置 Gravity
【发布时间】:2017-03-22 16:28:33
【问题描述】:

我正在尝试制作一个聊天应用程序,但在 RecyclerView 中设置自定义视图的重力时遇到了问题。我一直在搜索和尝试一整天,但我做不到,它总是显示为this(ScreenShot)。它应该位于屏幕右侧而不是左侧。但是在 Android Studio Preview 中,它显示正确。我附上了我的源代码..请告诉我出了什么问题..

  1. 在 MainActivity.xml (RecyclerView)中

    ......
    <RelativeLayout
        android:background="#9cbad8"
        android:layout_weight="70"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    <android.support.v7.widget.RecyclerView
        android:layout_alignParentRight="true"
        android:paddingBottom="5dp"
        android:listSelector="@drawable/bg_transparent"
        android:cacheColorHint="@android:color/transparent"
        android:paddingTop="50dp"
        android:id="@+id/list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
    </RelativeLayout>
    .......
    

2.在MessageItem.xml中(我设置graivity Right,截图显示正确)

<LinearLayout
        android:id="@+id/my_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
            <LinearLayout
                android:id="@+id/my_normal_layout"
                android:orientation="horizontal"
                android:gravity="end"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                    <TextView
                        android:id="@+id/my_time"
                        android:textSize="10sp"
                        android:layout_marginRight="5dp"
                        android:layout_gravity="bottom"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="오후 15:15"/>

                    <TextView
                        android:textAlignment="center"
                        android:layout_marginTop="5dp"
                        android:layout_marginRight="5dp"
                        android:maxWidth="200dp"
                        android:textSize="14sp"
                        android:lineSpacingMultiplier="1.2"
                        android:gravity="center_vertical"
                        android:paddingLeft="10dp"
                        android:paddingRight="15dp"
                        android:paddingTop="8dp"
                        android:paddingBottom="8dp"
                        android:background="@drawable/bubble_my"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textColor="#000000"
                        android:text="this is Test"
                        android:id="@+id/my_normal_text" />
            </LinearLayout>
</LinearLayout>

Android Layout Preview shows well(ScreenShot)

  1. 我的 RecyclerViewHolder

    public class ViewHolder extends RecyclerView.ViewHolder {
        LinearLayout myLayout;
        LinearLayout myNormarLayout;
        LinearLayout myMoreLayout;
    
        public ViewHolder(View v) {
            super(v);
            myLayout = (LinearLayout)v.findViewById(R.id.my_layout);
            myNormarLayout = (LinearLayout)v.findViewById(R.id.my_normal_layout);
            myMoreLayout = (LinearLayout)v.findViewById(R.id.my_more_layout);
        }
    }
    
  2. 同样在我的 RecyclerViewAdapter 中,我再次更改了 Gravity..

    ....
    holder.myNormarLayout.setVisibility(View.VISIBLE);
    holder.myNormarLayout.setGravity(Gravity.Right);
    ....
    

我已经尝试了几乎所有搜索的东西,但它们对此不起作用.. 请...帮帮我

【问题讨论】:

    标签: android android-recyclerview android-gravity


    【解决方案1】:

    您可以使用约束布局以获得更好的性能。

    在您的情况下,在时间和文本之间添加加权视图可能会有所帮助,试试这个

    <LinearLayout
        android:id="@+id/my_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
            <LinearLayout
                android:id="@+id/my_normal_layout"
                android:orientation="horizontal"
                android:gravity="end"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">
    
                    <TextView
                        android:id="@+id/my_time"
                        android:textSize="10sp"
                        android:layout_marginRight="5dp"
                        android:layout_gravity="bottom"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="오후 15:15"/>
                    <View
                          android:layout_height="0dp"
                          android:layout_width="0dp"
                          android:layout_weight="0"
                          />
                    <TextView
                        android:textAlignment="center"
                        android:layout_marginTop="5dp"
                        android:layout_marginRight="5dp"
                        android:maxWidth="200dp"
                        android:textSize="14sp"
                        android:lineSpacingMultiplier="1.2"
                        android:gravity="center_vertical"
                        android:paddingLeft="10dp"
                        android:paddingRight="15dp"
                        android:paddingTop="8dp"
                        android:paddingBottom="8dp"
                        android:background="@drawable/bubble_my"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textColor="#000000"
                        android:text="this is Test"
                        android:id="@+id/my_normal_text" />
            </LinearLayout>
    

    【讨论】:

    • 我的错,我在父布局上更改了一些内容,再次检查复制粘贴,我更改的只是在两个文本视图之间添加视图。
    • Tahnks 但我刚试过,它不起作用它仍然位于左侧..
    • 我的 Main Activity.xml 显示如下,link 和这个问题有关吗??
    • 不这么认为。也许把整个项目放在 github 上,我可以尝试 fork 并进行修复。
    • 非常感谢先生!!我刚刚上传到 Github。有时间请查收,再次感谢! uploadedLink
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多