Domanda

Dalla documentazione ufficiale:

Una sottoclasse di finestra di dialogo che può visualizzare uno, due o tre pulsanti. Se si desidera visualizzare solo una stringa in questa finestra di dialogo, utilizzare il metodo setMessage (). Se si desidera visualizzare una vista più complessa, cerca il framelayout chiamato "personalizzato" e aggiungi la tua vista:

 FrameLayout fl = (FrameLayout) findViewById(android.R.id.custom);
 fl.addView(myView, new LayoutParams(MATCH_PARENT, WRAP_CONTENT));

Ma il problema è che Android.r.id.custom si presenta solo a livello di OS da 8 API.

Come posso creare un alertDialog personalizzato se lavoro con meno livello API?

È stato utile?

Soluzione

In realtà quello che fai è il seguente:

Innanzitutto, crei personalizzato_layout.xml in res/layout. Quindi aggiungerai il codice successivo alla tua attività

Dialog myDialog = new Dialog(this);
myDialog .setOwnerActivity(MyParentActivity.this);
myDialog .setContentView(R.layout.custom_layout);
myDialog .setTitle("title");

E puoi mostrarlo e respingerlo usandomyDialog.show(); e myDialog.dismiss();

Se hai pulsanti o altre viste all'interno del tuo personalizzato

Button myButton = (Button) myDialog.findViewById(R.id.myButton);

Spero che questo aiuti.

Altri suggerimenti

Per la visualizzazione di titoli in un'app su cui sto lavorando, ho creato una nuova classe che estende la finestra di dialogo e ho usato setContentView () per visualizzare il mio layout personalizzato. A seconda delle tue esigenze (non hai detto esattamente perché avevo Per essere un alertDialog), questo può funzionare anche per te.

Questo può essere in qualche modo soggettivo, ma per salvare un po 'di sanità mentale, potresti voler tenere conto della distribuzione della versione Android corrente quando si sceglie un'API target. Secondo quanto segue Distribuzione della piattaforma, solo il 10,2% dei dispositivi Android utilizza un livello API inferiore a 8, con solo circa l'86% utilizzando i livelli di API 8-10.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top