チャットアプリを作ろうとしているのですが、RecyclerView でカスタムビューのグラビティを設定するのに苦労しています。私は一日中検索して試してみましたが、作ることができませんでした。常にこのように表示されます(スクリーンショット)。画面の左ではなく右に配置する必要があります。しかし、Android Studio Preview では、正しく表示されます。ソースを添付しています。何が問題なのか教えてください。
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 で (重力を右に設定すると、スクリーンショットが正しく表示されます)
<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 はよく表示されます (スクリーンショット)
私の 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 Again を変更しました。
.... holder.myNormarLayout.setVisibility(View.VISIBLE); holder.myNormarLayout.setGravity(Gravity.Right); ....
検索からほとんどのことを試しましたが、これにはうまくいきませんでした..お願いします...助けてください