Suche…


Parameter

Linie Beschreibung
Show(); Zeigt den Dialog
setContentView (R.layout.yourlayout); Setzt die ContentView des Dialogs auf Ihr benutzerdefiniertes Layout.
entlassen() Schließt den Dialog

Bemerkungen

  • Das Dialogfeld im ersten Beispiel (Dialog) muss show() nicht aufrufen show() wenn es bei der Verarbeitung im Konstruktor erstellt wird

  • Alert Dialogs müssen durch eine neue Instanz der AlertDialog.Builder() Klasse erstellt werden. Dem Builder-Muster folgend können alle Mitglieder des AlertDialog.Builder-Verfahrens mit einer Kette verknüpft werden, um die Dialoginstanz 'aufzubauen'.

  • Der Alert - Dialog Builder kann direkt show() den Dialog - Sie brauchen nicht zu nennen create() dann show() auf der Alertdialog Instanz

Alert-Dialog

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
                MainActivity.this);

        alertDialogBuilder.setTitle("Title Dialog");
        alertDialogBuilder
                .setMessage("Message Dialog")
                .setCancelable(true)
                .setPositiveButton("Yes",
                        new DialogInterface.OnClickListener() {

                            public void onClick(DialogInterface dialog, int arg1) {
                                // Handle Positive Button
         
                            }
                        })
                .setNegativeButton("No",
                        new DialogInterface.OnClickListener() {

                            public void onClick(DialogInterface dialog, int arg1) {
                                // Handle Negative Button
                                dialog.cancel();
                            }
                        });

        AlertDialog alertDialog = alertDialogBuilder.create();
        alertDialog.show();

Ein grundlegender Alert-Dialog

    AlertDialog.Builder builder = new AlertDialog.Builder(context);
    //Set Title
    builder.setTitle("Reset...")
            //Set Message
            .setMessage("Are you sure?")
            //Set the icon of the dialog
            .setIcon(drawable)
            //Set the positive button, in this case, OK, which will dismiss the dialog and do everything in the onClick method
            .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    // Reset
                }
            });
    AlertDialog dialog = builder.create();
    //Now, any time you can call on:
    dialog.show();
    //So you can show the dialog.

Jetzt wird dieser Code dies erreichen:
Dialogbild
( Bildquelle: WikiHow )

Datumsauswahl in DialogFragment

XML des Dialogs:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <DatePicker
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/datePicker"
        android:layout_gravity="center_horizontal"
        android:calendarViewShown="false"/>

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="ACCEPT"
        android:id="@+id/buttonAccept" />

</LinearLayout>

Dialogklasse:

public class ChooseDate extends DialogFragment implements View.OnClickListener {

    private DatePicker datePicker;
    private Button acceptButton;

    private boolean isDateSetted = false;
    private int year;
    private int month;
    private int day;

    private DateListener listener;

    public interface DateListener {
        onDateSelected(int year, int month, int day);
    }

    public ChooseDate(){}

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.dialog_year_picker, container);

        getDialog().setTitle(getResources().getString("TITLE"));

        datePicker = (DatePicker) rootView.findViewById(R.id.datePicker);
        acceptButton = (Button) rootView.findViewById(R.id.buttonAccept);
        acceptButton.setOnClickListener(this);

        if (isDateSetted) {
            datePicker.updateDate(year, month, day);
        }

        return rootView;
    }

    @Override
    public void onClick(View v) {
        switch(v.getId()){
            case R.id.buttonAccept:
                int year = datePicker.getYear();
                int month = datePicker.getMonth() + 1; // months start in 0
                int day = datePicker.getDayOfMonth();
                
                listener.onDateSelected(year, month, day);
                break;
        }
        this.dismiss();
    }

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        listener = (DateListener) context;
    }

    public void setDate(int year, int month, int day) {

        this.year = year;
        this.month = month;
        this.day = day;
        this.isDateSetted = true;
    }

}

Aktivität, die den Dialog aufruft:

public class MainActivity extends AppCompatActivity implements ChooseDate.DateListener{

    private int year;
    private int month;
    private int day;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        private void showDateDialog();
    }

    private void showDateDialog(){
        ChooseDate pickDialog = new ChooseDate();
        // We could set a date
        //  pickDialog.setDate(23, 10, 2016);
        pickDialog.show(getFragmentManager(), "");
    }

    @Override
    onDateSelected(int year, int month, int day){
        this.day = day;
        this.month = month;
        this.year = year;
    }
}

DatePickerDialog

DatePickerDialog ist die einfachste Möglichkeit, DatePicker zu verwenden, da Sie Dialoge an jeder beliebigen Stelle in Ihrer App DatePicker können. Sie müssen kein eigenes Layout mit dem DatePicker Widget DatePicker .

So zeigen Sie den Dialog:

DatePickerDialog datePickerDialog = new DatePickerDialog(context, listener, year, month, day);
datePickerDialog.show();

Sie können das DataPicker Widget aus dem obigen Dialog DataPicker , um auf weitere Funktionen zuzugreifen und beispielsweise ein Mindestdatum in Millisekunden DataPicker :

DatePicker datePicker = datePickerDialog.getDatePicker();
datePicker.setMinDate(System.currentTimeMillis());

Datumsauswahl

DatePicker kann der Benutzer das Datum auswählen. Wenn wir eine neue Instanz von DatePicker , können wir das Startdatum festlegen. Wenn wir kein Anfangsdatum festlegen, wird das aktuelle Datum standardmäßig festgelegt.

Wir können DatePicker dem Benutzer DatePicker , indem Sie DatePickerDialog oder unser eigenes Layout mit dem DatePicker Widget DatePicker .


Außerdem können wir den Datumsbereich einschränken, den der Benutzer auswählen kann.

Durch Einstellen des Mindestdatums in Millisekunden

//In this case user can pick date only from future
datePicker.setMinDate(System.currentTimeMillis());

Durch Festlegen des maximalen Datums in Millisekunden

//In this case user can pick date only, before following week.
datePicker.setMaxDate(System.currentTimeMillis() + TimeUnit.DAYS.toMillis(7));

Um Informationen zu erhalten, welches Datum vom Benutzer ausgewählt wurde, müssen wir Listener .

Wenn wir DatePickerDialog , können wir OnDateSetListener im Konstruktor setzen, wenn wir eine neue Instanz von DatePickerDialog :

Verwendungsbeispiel von DatePickerDialog

public class SampleActivity extends AppCompatActivity implements DatePickerDialog.OnDateSetListener {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ...
    }

    private void showDatePicker() {
        //We need calendar to set current date as initial date in DatePickerDialog.
        Calendar calendar = new GregorianCalendar(Locale.getDefault());
        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH);
        int day = calendar.get(Calendar.DAY_OF_MONTH);

        DatePickerDialog datePickerDialog = new DatePickerDialog(this, this, year, month, day);
        datePickerDialog.show();
    }

    @Override
    public void onDateSet(DatePicker datePicker, int year, int month, int day) {

    }
}

Ansonsten, wenn wir unser eigenes Layout mit dem DatePicker Widget erstellen, müssen wir auch einen eigenen Listener erstellen, wie er in einem anderen Beispiel gezeigt wurde

Hinzufügen von Material Design AlertDialog zu Ihrer App mit Appcompat

AlertDialog ist eine Unterklasse von Dialog , die eine, zwei oder drei Schaltflächen anzeigen kann. Wenn Sie nur eine setMessage() in diesem Dialogfeld anzeigen möchten, verwenden Sie die setMessage() -Methode.

Das AlertDialog Paket von android.app wird auf verschiedenen Android-Betriebssystemversionen unterschiedlich android.app .

Die Android V7 Appcompat-Bibliothek bietet eine AlertDialog Implementierung, die in allen unterstützten Android-Betriebssystemversionen zusammen mit Material Design angezeigt wird:

Material AlertDialog

Zuerst müssen Sie die V7 Appcompat-Bibliothek zu Ihrem Projekt hinzufügen. Sie können dies in der App-Ebene build.gradle tun:

dependencies {
    compile 'com.android.support:appcompat-v7:24.2.1'
    //........
}

Stellen Sie sicher, dass Sie die richtige Klasse importieren:

import android.support.v7.app.AlertDialog;

Dann erstellen Sie einen AlertDialog wie folgt:

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Are you sure?");
builder.setMessage("You'll lose all photos and media!");
builder.setPositiveButton("ERASE", null);
builder.setNegativeButton("CANCEL", null);
builder.show();

ListView in AlertDialog

Wir können ListView oder RecyclerView für die Auswahl aus der Liste der Elemente verwenden. Wenn wir jedoch nur eine geringe Anzahl von Auswahlmöglichkeiten haben, können wir AlertDialog.Builder setAdapter .

    private void showDialog()
    {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("Choose any item");

        final List<String> lables = new ArrayList<>();
        lables.add("Item 1");
        lables.add("Item 2");
        lables.add("Item 3");
        lables.add("Item 4");

        ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_dropdown_item_1line, lables);
        builder.setAdapter(dataAdapter, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(MainActivity.this,"You have selected " + lables.get(which),Toast.LENGTH_LONG).show();
            }
        });
        AlertDialog dialog = builder.create();
        dialog.show();
    }

Wenn wir keine spezielle ListView benötigen, können wir vielleicht eine grundlegende Methode verwenden:

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Select an item")
       .setItems(R.array.your_array, new DialogInterface.OnClickListener() {
           public void onClick(DialogInterface dialog, int which) {
               // The 'which' argument contains the index position of the selected item
               Log.v(TAG, "Selected item on position " + which);
           }
        });
builder.create().show();

Benutzerdefinierter Alert-Dialog mit EditText

void alertDialogDemo() {
        // get alert_dialog.xml view
        LayoutInflater li = LayoutInflater.from(getApplicationContext());
        View promptsView = li.inflate(R.layout.alert_dialog, null);

        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
                getApplicationContext());

        // set alert_dialog.xml to alertdialog builder
        alertDialogBuilder.setView(promptsView);

        final EditText userInput = (EditText) promptsView.findViewById(R.id.etUserInput);

        // set dialog message
        alertDialogBuilder
                .setCancelable(false)
                .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {
                        // get user input and set it to result
                        // edit text
                        Toast.makeText(getApplicationContext(), "Entered: "+userInput.getText().toString(), Toast.LENGTH_LONG).show();
                    }
                })
                .setNegativeButton("Cancel",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int id) {
                                dialog.cancel();
                            }
                        });

        // create alert dialog
        AlertDialog alertDialog = alertDialogBuilder.create();

        // show it
        alertDialog.show();
    }

XML-Datei: res / layout / alert_dialog.xml

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Type Your Message : "
    android:textAppearance="?android:attr/textAppearanceLarge" />

<EditText
    android:id="@+id/etUserInput"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <requestFocus />

</EditText>

Geben Sie hier die Bildbeschreibung ein

Fullscreen Custom Dialog ohne Hintergrund und ohne Titel

In styles.xml fügen Sie Ihren eigenen Stil hinzu:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="AppBaseTheme" parent="@android:style/Theme.Light.NoTitleBar.Fullscreen">
    </style>
</resources>

Erstellen Sie Ihr benutzerdefiniertes Layout für den Dialog: fullscreen.xml :

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    
</RelativeLayout>

Dann können Sie es in der Java-Datei für eine Aktivität oder einen Dialog verwenden.

import android.app.Activity;
import android.app.Dialog;
import android.os.Bundle;

public class FullscreenActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //You can set no content for the activity.
        Dialog mDialog = new Dialog(this, R.style.AppBaseTheme);
        mDialog.setContentView(R.layout.fullscreen);
        mDialog.show();
    }
}

Alert-Dialog mit mehrzeiligem Titel

Mit der setCustomTitle () - Methode von AlertDialog.Builder können Sie eine beliebige Ansicht für den Dialogtitel angeben. Eine übliche Verwendung für diese Methode ist das Erstellen eines Warnungsdialogfelds mit einem langen Titel.

AlertDialog.Builder builder = new AlertDialog.Builder(context, Theme_Material_Light_Dialog);
builder.setCustomTitle(inflate(context, R.layout.my_dialog_title, null))
       .setView(inflate(context, R.layout.my_dialog, null))
       .setPositiveButton("OK", null);

Dialog dialog = builder.create();
dialog.show();

my_dialog_title.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:padding="16dp">

    <TextView
        style="@android:style/TextAppearance.Small"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur
tincidunt condimentum tristique. Vestibulum ante ante, pretium porttitor
iaculis vitae, congue ut sem. Curabitur ac feugiat ligula. Nulla
tincidunt est eu sapien iaculis rhoncus. Mauris eu risus sed justo
pharetra semper faucibus vel velit."
        android:textStyle="bold"/>

</LinearLayout>

my_dialog.xml:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:padding="16dp"
        android:scrollbars="vertical">

        <TextView
            style="@android:style/TextAppearance.Small"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingBottom="10dp"
            android:text="Hello world!"/>

        <TextView
            style="@android:style/TextAppearance.Small"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingBottom="10dp"
            android:text="Hello world again!"/>

        <TextView
            style="@android:style/TextAppearance.Small"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingBottom="10dp"
            android:text="Hello world again!"/>

        <TextView

            style="@android:style/TextAppearance.Small"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingBottom="10dp"
            android:text="Hello world again!"/>

    </LinearLayout>
</ScrollView>

Der Benachrichtigungsdialog wie dargestellt:



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow