Sto cercando di creare un AlertDialog
con un view
personalizzato (senza titolo o piè di pagina) e angoli arrotondati. Ho visto molti post su come farlo e ho provato un sacco di cose, ma non riesco a costruirlo come vorrei.Android: AlertDialog con visualizzazione personalizzata e angoli arrotondati
Questo è il mio obiettivo:
ho creato un drawable
per la dialog
chiamato dialog_background.xml:
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<solid
android:color="#FFAAAAAA" />
<stroke
android:width="2dp"
android:color="#FF000000" />
<corners android:radius="20dp" />
</shape>
E ho aggiunto un style
usarlo:
<style name="MyDialog" parent="@android:style/Theme.Dialog">
<item name="android:background">@drawable/dialog_background</item>
</style>
Il layout
della mia dogana view
avrà due pulsanti. In questo momento ti mostro uno LinearLayout
vuoto per renderlo semplice. Questo è playdialog.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
style="@style/MyDialog"
>
</LinearLayout>
Per costruire il Dialog
io uso un DialogFragment
. Questa è la sua onCreateDialog
funzione:
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
builder.setView(inflater.inflate(R.layout.playdialog, null));
return builder.create();
}
Ok, se uso il codice così ottengo questo:
ho cercato di impostare il dialog
sfondo a trasparente modificare il mio codice DialogFragment
:
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
builder.setView(inflater.inflate(R.layout.playdialog, null));
**NEW**
Dialog d = builder.create();
d.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
return d;
}
Il risultato è esattamente lo stesso, quindi ho capito che quel rettangolo bianco si il mio dialog
proviene dalla mia versione personalizzata view
, non dallo dialog
. Sto già impostando lo sfondo di view
su dialog_background.xml, quindi non posso impostarlo su trasparente o ho perso angoli, colore, ecc.
Quindi ho deciso di modificare lo sfondo di dialog
utilizzando dialog_background.xml e la mia vista ha un colore a tinta unita come sfondo.
Nella mia abitudine view
layout
(playdialog.xml) ho sostituito style = "@ stile/MyDialog" con:
android:background="#FFAAAAAA"
E poi nel mio DialogFragment
ho usato questo codice:
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
builder.setView(inflater.inflate(R.layout.playdialog, null));
**NEW**
Dialog d = builder.create();
d.getWindow().setBackgroundDrawableResource(R.drawable.dialog_background);
return d;
}
Questo è quello che ottengo:
È quasi quello che volevo, ma puoi vedere i miei bordi personalizzati view
, quindi non è abbastanza buono. A questo punto non sapevo cos'altro potessi fare.
Qualcuno sa come posso risolverlo?
Grazie!
potresti risolvere il problema? Con l'angolo arrotondato, non sono in grado di eliminare le sezioni bianche nel corder – sabbir