Właśnie wszedł all mój android.app.AlertDialog
do android.support.v7.app.AlertDialog
.
Po kilku testach z emulatorami 4.X stwierdziłem, że dla prostego okna wystarczy zmienić import. Ale w przypadku dialogów wielokrotnego wyboru należy dodatkowo wykonać AppCompatDialog alert = builder.create();
, aby uzyskać okna dialogowe Material Design (w wersji 4.X).
Żeby było jasne, czy masz prosty dialog jak ten:
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();
Zmiana import wystarczy :)
Ale dla dialogowym wielo wybór, trzeba użyć AppCompatDialog
w ten sposób:
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();
Otrzymasz ładny wygląd Material Design na urządzeniach 4.X.
Teraz zabawa!
Przez okna wyboru wielu, na urządzeniu 5.x wersja natywna (android.app.AlertDialog
) pokazuje pól wyboru w lewo, poprawnie po Material Design spec. Ale jeśli korzystasz z okien dialogowych pomocy technicznej, pola wyboru będą wyświetlane pod numerem z prawej strony. WTF!
W dłuższej perspektywie, gdy Android 5+ zyska udział w rynku, trzeba będzie wrócić do rodzimych okien dialogowych.
przy użyciu 'builder.setView (v)' dla 'appcompatdialog' wielkość okna dialogowego to max zamiast tylko zawijania komponentu. tutaj 'v' jest' recyclerview', który ma zmienną nie. elementów –
co powinienem zrobić, aby rozmiar okna zmieniał się zgodnie z nr. elementów 'recyclerview'? –