Je souhaite personnaliser AlertDialog
pour avoir un en-tête fixe et un pied de page avec RecyclerView
défilant. J'ai donc essayé de le faire avec RelativeLayout
mais s'il y a beaucoup d'éléments dans RecyclerView
, le pied de page se cache sous RecyclerView
. Et j'ajoute une hauteur fixe au RecyclerView
, puis s'il y a moins d'articles, il y a un espace supplémentaire entre RecyclerView
et le pied de page.
Avec RelativeLayout: strong >
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/roundedCorner"> <TextView android:text="Add Additional Information" android:id="@+id/additionalInfoTitle" android:layout_width="match_parent" android:layout_height="match_parent" android:textSize="16dp" android:gravity="center" android:textColor="@color/white" android:textStyle="bold" android:background="@drawable/popupTitle" android:padding="@dimen/_10sdp"/> <android.support.v7.widget.RecyclerView android:id="@+id/additionalDataList" android:scrollbars="vertical" android:layout_alignParentTop="true" android:layout_width="fill_parent" android:layout_height="match_parent"/> <Button android:text="Login" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/continueButton" style="@style/buttonStyle" android:backgroundTint="@color/colorPrimary" android:layout_marginTop="@dimen/_12sdp" android:layout_marginLeft="@dimen/_20sdp" android:layout_marginRight="@dimen/_20sdp" /> <Button android:text="Cancel" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/cancelButton" style="@style/buttonStyle" android:backgroundTint="@color/gray" android:layout_marginBottom="@dimen/_12sdp" android:layout_marginLeft="@dimen/_20sdp" android:layout_marginRight="@dimen/_20sdp" /> </LinearLayout>
Avec LinearLayout:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="schemas.android.com/apk/res-auto" android:layout_width="fill_parent" android:layout_height="fill_parent" android:fillViewport="true" android:gravity="center" android:layout_centerVertical="true"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:id="@+id/main" android:orientation="vertical"> <TextView android:text="Add Additional Information" android:id="@+id/additionalInfoTitle" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="16dp" android:gravity="center" android:textColor="@color/white" android:textStyle="bold" android:background="@drawable/popupTitle" android:padding="@dimen/_10sdp"/> <android.support.v7.widget.RecyclerView android:id="@+id/additionalDataList" android:scrollbars="vertical" android:layout_alignParentTop="true" android:layout_width="fill_parent" android:layout_height="wrap_content"/> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:id="@+id/drlBottomMenu" android:layout_height="wrap_content" android:background="@color/offWhite" android:orientation="vertical" android:layout_below="@+id/main"> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Continue" android:layout_gravity="center" android:id="@+id/continueButton" style="@style/buttonStyle" android:backgroundTint="@color/colorPrimary" android:layout_weight="0.5" android:textAllCaps="false" android:padding="12dp" android:layout_marginTop="@dimen/_12sdp" android:layout_marginLeft="@dimen/_20sdp" android:layout_marginRight="@dimen/_20sdp" android:textColor="@color/white"/> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Cancel" android:padding="12dp" android:layout_gravity="center" android:id="@+id/cancelButton" android:textAllCaps="false" style="@style/buttonStyle" android:backgroundTint="@color/gray" android:layout_weight="0.5" android:textColor="@color/white" android:layout_marginBottom="@dimen/_12sdp" android:layout_marginLeft="@dimen/_20sdp" android:layout_marginRight="@dimen/_20sdp" /> </LinearLayout> </RelativeLayout>
Quelqu'un peut-il s'il vous plaît m'aider à concevoir ceci. La sortie souhaitée doit être:
MODIFIER Après avoir utilisé constraintlayout, j'obtiens le résultat suivant:
4 Réponses :
<android.support.v7.widget.RecyclerView android:id="@+id/additionalDataList" android:scrollbars="vertical" android:layout_alignParentTop="true" android:layout_width="fill_parent" android:layout_height="match_parent" android:layout_marginBottom="height of bottom header"<-------------add this line /> or you can use constraintlayout and set height to 0dp so recylerview can take up availabe space one more option is to use linear layout and set it to wrap content and dynamically inflate views
Essayez ceci
Code d'activité
<android.support.constraint.ConstraintLayout 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"> <TextView android:id="@+id/additionalInfoTitle" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/colorAccent" android:gravity="center" android:padding="10dp" android:text="Add Additional Information" android:textColor="@android:color/white" android:textSize="16dp" android:textStyle="bold" app:layout_constraintBottom_toTopOf="@+id/additionalDataList" app:layout_constraintHorizontal_bias="0.5" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> <android.support.v7.widget.RecyclerView android:id="@+id/additionalDataList" android:layout_width="0dp" android:layout_height="0dp" android:scrollbars="vertical" app:layout_constraintBottom_toTopOf="@+id/drlBottomMenu" app:layout_constraintEnd_toEndOf="@id/drlBottomMenu" app:layout_constraintHeight_default="wrap" app:layout_constraintHorizontal_bias="0.5" app:layout_constraintHorizontal_chainStyle="packed" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/additionalInfoTitle" /> <LinearLayout android:id="@+id/drlBottomMenu" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@android:color/white" android:orientation="vertical" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.5" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/additionalDataList"> <Button android:id="@+id/continueButton" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_marginLeft="20dp" android:layout_marginTop="12dp" android:layout_marginRight="20dp" android:layout_weight="0.5" android:padding="12dp" android:text="Continue" android:textAllCaps="false" android:textColor="@android:color/white" app:backgroundTint="@color/colorPrimary" /> <Button android:id="@+id/cancelButton" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_marginLeft="20dp" android:layout_marginTop="12dp" android:layout_marginRight="20dp" android:layout_weight="0.5" android:padding="12dp" android:text="Cancel" android:textAllCaps="false" android:textColor="@android:color/white" app:backgroundTint="@android:color/darker_gray" /> </LinearLayout> </android.support.constraint.ConstraintLayout>
layout.test
import android.app.Dialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.Gravity; import android.view.Window; import android.view.WindowManager; import java.util.ArrayList; public class MainActivity extends AppCompatActivity { RecyclerView additionalDataList; ArrayList<String> arrayList = new ArrayList<>(); DataAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Dialog dialog = new Dialog(this); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.setContentView(R.layout.test); Window window = dialog.getWindow(); window.setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT); window.setGravity(Gravity.CENTER); additionalDataList = dialog.findViewById(R.id.additionalDataList); additionalDataList.setLayoutManager(new LinearLayoutManager(this)); additionalDataList.setHasFixedSize(true); addDataToList(); adapter = new DataAdapter(this, arrayList); additionalDataList.setAdapter(adapter); dialog.show(); } private void addDataToList() { for (int i = 0; i < 50; i++) { arrayList.add("Item :" + i); } } }
OUTPUT
S'il y a moins d'éléments, la fenêtre contextuelle occupe également la quasi-totalité de l'écran. Je veux qu'il soit emballé selon le nombre d'articles.
@Arti vérifie la réponse mise à jour essayez d'utiliser ConstraintLayout
c'est une meilleure solution pour votre requête @Arti
Ci-dessus ne fonctionne pas, il prend le plein écran avec un espace vide entre les deux.
@Arti j'ai testé ce qui précède et cela fonctionne pour moi pouvez-vous partager votre code pour la boîte de dialogue d'alerte
Essayez d'utiliser MaterialDialog
ou AlertDialog
, puis créez la mise en page avec constrainlayout
+ instructions
. C'est bien plus simple.
Essayez d'utiliser une contrainte dans une contrainte telle que
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout 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.support.constraint.ConstraintLayout android:id="@+id/main" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="8dp" android:layout_marginLeft="8dp" android:layout_marginTop="8dp" android:layout_marginEnd="8dp" android:layout_marginRight="8dp" android:layout_marginBottom="8dp" android:padding="15dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"> <TextView android:id="@+id/additionalInfoTitle" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="8dp" android:background="@android:color/darker_gray" android:gravity="center" android:padding="10dp" android:text="Add Additional Information" android:textColor="@android:color/white" android:textSize="16dp" android:textStyle="bold" app:layout_constraintTop_toTopOf="parent" /> <android.support.v7.widget.RecyclerView android:id="@+id/additionalDataList" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_alignParentTop="true" android:layout_marginStart="8dp" android:layout_marginLeft="8dp" android:layout_marginEnd="8dp" android:layout_marginRight="8dp" android:layout_weight="8" android:scrollbars="vertical" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/additionalInfoTitle" /> <Button android:id="@+id/continueButton" style="@style/buttonStyle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="8dp" android:layout_marginLeft="8dp" android:layout_marginEnd="8dp" android:layout_marginRight="8dp" android:backgroundTint="@color/colorPrimary" android:text="Login" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/additionalDataList" /> <Button android:id="@+id/cancelButton" style="@style/buttonStyle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="8dp" android:layout_marginLeft="8dp" android:layout_marginTop="8dp" android:layout_marginEnd="8dp" android:layout_marginRight="8dp" android:layout_marginBottom="8dp" android:backgroundTint="@color/gray" android:text="Cancel" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/continueButton" /> </android.support.constraint.ConstraintLayout> </android.support.constraint.ConstraintLayout>