9

Vor dieser habe ich ein DialogBuilderAlertDialog wie dieseWie Build AppCompatDialog von AlertDialog.Builder oder Äquivalent?

AlertDialog.Builder builder = new AlertDialog.Builder(context); 
... 
... 
AlertDialog dialog = builder.create(); 

erstellen Wie kann ich die neuen AppCompatDialog aus einem Dialog Builder bauen, oder gibt es wieder eine neue gleichwertige Möglichkeit, das zu tun?

Antwort

19

Nur die Lösung gefunden. Ich sollte

import android.support.v7.app.AlertDialog; 

importieren und dann wird AppCompatDialog dialog = builder.create() arbeiten.

6

android.support.v7.app.AppCompatDialog ist direkte Elternklasse von android.support.v7.app.AlertDialog, wo immer Sie android.support.v7.app.AlertDialog verwenden können, können Sie android.support.v7.app.AppCompatDialog verwenden.

15

Wenn Sie möchten, dass eine AlertDialog verwenden, importieren Sie einfach die neue supprt v 22.1 und einen Code zu verwenden (achten Sie auf die Import):

import android.support.v7.app.AlertDialog 

AlertDialog.Builder builder = 
     new AlertDialog.Builder(this, R.style.AppCompatAlertDialogStyle); 
      builder.setTitle("Dialog"); 
      builder.setMessage("Lorem ipsum dolor ...."); 
      builder.setPositiveButton("OK", null); 
      builder.setNegativeButton("Cancel", null); 
      builder.show(); 

Wenn

+0

Bei der Verwendung von 'builder.setView (v)' für 'appcompatdialog' ist die Größe des Dialogs maximal, anstatt nur die Komponente zu umbrechen. Hier ist 'v' eine 'Recyclerview', die Variable Nr. der Elemente –

+0

was soll ich tun, damit die Größe des Dialogs ändert sich nach Nr. von 'recyclerview' Artikeln? –

3

Ich habe gerade alle bewegt meine android.app.AlertDialog zu android.support.v7.app.AlertDialog.

Nach einigen Tests mit 4.X Emulatoren habe ich festgestellt, dass es für einen einfachen Dialog ausreicht, einfach den Import zu ändern. Aber für Multiple-Choice-Dialoge müssen Sie auch AppCompatDialog alert = builder.create(); tun, um die Material Design-Stil-Dialoge (auf 4.X) zu erhalten.

Um klar zu sein, wenn Sie einen einfachen Dialog wie diese haben: genügt

import android.support.v7.app.AlertDialog; 

AlertDialog.Builder builder = new AlertDialog.Builder(ctx); 
builder.setIcon(resId) 
.setTitle(title) 
.setMessage(msg) 
.setCancelable(isCalncelable) 
.setPositiveButton(btn1, listener1); 
AlertDialog alert = builder.create(); 
alert.show(); 

Ändern der Import :)

Aber für eine Multi Auswahldialog, müssen Sie AppCompatDialog verwenden wie folgt:

import android.support.v7.app.AlertDialog; 
import android.support.v7.app.AppCompatDialog; 

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
builder.setTitle("Choose something") 
.setPositiveButton(...) 
.setMultiChoiceItems(mStringArray, mSelectedArray, SomeFragment.this); 
AppCompatDialog alert = builder.create(); 
alert.show(); 

Dann bekommst du das schöne Material Design auf 4.X Geräten.

Jetzt ist der Spaß Teil!

Für einen Mehrauswahldialog, auf einem 5.x Gerät, die native Version (android.app.AlertDialog) zeigt die Check-Boxen am , richtig Material Design spec folgenden links. Wenn Sie jedoch die Supportdialoge verwenden, werden die Kontrollkästchen unter der Nummer rechts angezeigt. WTF!

Auf lange Sicht, wenn Android 5+ Marktanteile gewinnt, sollten Sie wieder zu nativen Dialogen wechseln.

Verwandte Themen