android 如何在 RecyclerView 中设置重力
android How to set Gravity in RecyclerView
我正在尝试制作一个聊天应用程序,但在 RecyclerView 中设置自定义视图的重力时遇到了问题。我一直在搜索和尝试了一整天,但我做不到,它总是显示this(ScreenShot)。它应该位于屏幕的右侧而不是左侧。但是在 Android Studio Preview 中,它显示 correctly.Im 附上我的来源..请告诉我哪里出了问题..
在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.In MessageItem.xml(重力设置正确,截图显示正确)
<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)
我的 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);
}
}
同样在我的 RecyclerViewAdapter 中,我再次更改了 Gravity..
....
holder.myNormarLayout.setVisibility(View.VISIBLE);
holder.myNormarLayout.setGravity(Gravity.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"/>
<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>
我正在尝试制作一个聊天应用程序,但在 RecyclerView 中设置自定义视图的重力时遇到了问题。我一直在搜索和尝试了一整天,但我做不到,它总是显示this(ScreenShot)。它应该位于屏幕的右侧而不是左侧。但是在 Android Studio Preview 中,它显示 correctly.Im 附上我的来源..请告诉我哪里出了问题..
在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.In MessageItem.xml(重力设置正确,截图显示正确)
<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)
我的 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); } }
同样在我的 RecyclerViewAdapter 中,我再次更改了 Gravity..
.... holder.myNormarLayout.setVisibility(View.VISIBLE); holder.myNormarLayout.setGravity(Gravity.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"/>
<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>