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>