P.S. EDIT Est-il possible d'aligner CardView de manière programmatique ?
J'ai trouvé quelques solutions pour l'ancien FirebaseRecyclerAdapter, mais elles ne fonctionnent pas. Avez-vous des suggestions ?
J'ai utilisé ce code en java, provenant d'un vieux post de SO mais cela n'a aucun effet
if (model.getReceiver() != "ADMIN")
holder.msgLinearLayout.setGravity(Gravity.LEFT | Gravity.START);
else
holder.msgLinearLayout.setGravity(Gravity.RIGHT | Gravity.END);
Voici la disposition de l'activité de chat, avec seulement un RecyclerView et la disposition inférieure pour l'écriture et l'envoi de texte et d'images.
activité_chat.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".ChatActivity">
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_view2"
android:scrollbars="vertical"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
></android.support.v7.widget.RecyclerView>
<LinearLayout
android:id="@+id/linearLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageButton
android:id="@+id/photoPickerButton"
android:layout_width="36dp"
android:layout_height="36dp"
android:background="@android:drawable/ic_menu_gallery" />
<EditText
android:id="@+id/messageEditText"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="1" />
<Button
android:id="@+id/sendButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:enabled="false"
android:text="@string/send_button_label"/>
</LinearLayout>
</LinearLayout>
C'est la mise en page que j'utilise pour chaque entrée dans le RecyclerView. Elle comporte une CardView, contenant un LinearLayout qui contient des TextViews. Est-ce là que se situe le problème ? Devrais-je utiliser une mise en page linéaire ou relative dans la racine ?
chat_message_entry_layout.xml
<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardElevation="8dp"
android:orientation="vertical"
android:id="@+id/msgCardView"
android:layout_margin="8dp">
<LinearLayout
android:id="@+id/msgLinearLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<ImageView
android:id="@+id/image"
android:layout_width="200dp"
android:layout_height="200dp"/>
<TextView
android:id="@+id/msg"
android:textSize="20sp"
android:layout_width="200dp"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/time"
android:backgroundTint="#0e0d0e"
android:layout_width="200dp"
android:layout_height="wrap_content" />
</LinearLayout>
</android.support.v7.widget.CardView>