Klingt nach einer guten Gelegenheit, einen AlertDialog zu verwenden .
So einfach es scheint, Android hat keinen eingebauten Dialog, um dies zu tun (soweit ich weiß). Glücklicherweise ist es nur eine kleine zusätzliche Arbeit, zusätzlich zum Erstellen eines Standard-AlertDialogs. Sie müssen lediglich einen EditText erstellen, damit der Benutzer Daten eingeben kann, und ihn als Ansicht des AlertDialogs festlegen. Sie können den zulässigen Eingabetyp bei Bedarf mit setInputType anpassen .
Wenn Sie eine Mitgliedsvariable verwenden können, können Sie die Variable einfach auf den Wert des EditText setzen. Sie bleibt bestehen, nachdem das Dialogfeld geschlossen wurde. Wenn Sie keine Mitgliedsvariable verwenden können, müssen Sie möglicherweise einen Listener verwenden, um den Zeichenfolgenwert an die richtige Stelle zu senden. (Ich kann mehr bearbeiten und ausarbeiten, wenn Sie dies benötigen).
Innerhalb Ihrer Klasse:
private String m_Text = "";
Im OnClickListener Ihrer Schaltfläche (oder in einer von dort aufgerufenen Funktion):
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Title");
// Set up the input
final EditText input = new EditText(this);
// Specify the type of input expected; this, for example, sets the input as a password, and will mask the text
input.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
builder.setView(input);
// Set up the buttons
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
m_Text = input.getText().toString();
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
builder.show();
global Context, Context cont;
Müssen deklarieren und dann "dies" in alertdialog durch ersetzencont
. Builder für AlertDialog.Builder = neuer AlertDialog.Builder (Forts.); letzte EditText-Eingabe = neuer EditText (Forts.);Ich werde die Antwort von @ Aaron mit einem Ansatz ergänzen , der Ihnen die Möglichkeit gibt, das Dialogfeld besser zu gestalten. Hier ist ein angepasstes Beispiel:
Hier ist das Beispiellayout zum Erstellen des EditText-Dialogfelds:
Das Endergebnis:
quelle
getView()
mitfindViewById(android.R.id.content)
und es ist alles wie Charme gearbeitet. Vielen Dank für das Teilen :)(ViewGroup)
!@dimen/content_padding_normal
?Wie wäre es mit diesem BEISPIEL ? Es scheint unkompliziert.
quelle
Wenn Sie etwas Platz in
left
undright
von derinput
Ansicht wünschen , können Sie einige Polster wie hinzufügendimension.xml
Hoffe es hilft
quelle
resources
?Ich fand es sauberer und wiederverwendbarer
AlertDialog.Builder
, eine benutzerdefinierte Dialogklasse zu erstellen. Dies ist ein Dialogfeld, in dem der Benutzer aufgefordert wird, eine Telefonnummer einzugeben. Eine voreingestellte Telefonnummer kann auch durch AnrufensetNumber()
vor dem Anruf angegeben werdenshow()
.InputSenderDialog.java
dialog_input_sender_number.xml
Verwendungszweck:
quelle
@LukeTaylor: Ich habe derzeit die gleiche Aufgabe zur Hand (Erstellen eines Popups / Dialogfelds, das einen EditText enthält).
Persönlich finde ich die volldynamische Route in Bezug auf Kreativität etwas einschränkend.
VOLLSTÄNDIG BENUTZERDEFINIERTES DIALOG-LAYOUT:
Anstatt sich beim Erstellen des Dialogs vollständig auf Code zu verlassen, können Sie ihn wie folgt vollständig anpassen:
1) - Erstellen Sie eine neue
Layout Resource
Datei. Dies fungiert als Dialog und ermöglicht volle kreative Freiheit!HINWEIS: Beachten Sie die Richtlinien für das Materialdesign, um die Dinge sauber und auf dem neuesten Stand zu halten.
2) - Geben Sie allen Ihren
View
Elementen IDs . In meinem Beispielcode unten habe ich 1EditText
und 2Buttons
.3) - Erstellen Sie eine
Activity
mit aButton
, zu Testzwecken .. Wir lassen es aufblasen und starten Ihren Dialog!Stück Kuchen! Volle kreative Freiheit! Befolgen Sie unbedingt die Materialrichtlinien;)
Ich hoffe, dies hilft jemandem! Lass mich wissen, was ihr denkt!
quelle
Es ist Arbeit für mich
Wie rufe ich an? (Aktueller Aktivitätsname)
showForgotDialog (aktueller_Aktivitätsname.dies);
quelle