Brzmi jak dobra okazja do użycia AlertDialog .
Tak proste, jak się wydaje, Android nie ma wbudowanego okna dialogowego, aby to zrobić (o ile mi wiadomo). Na szczęście jest to tylko trochę dodatkowej pracy nad stworzeniem standardowego AlertDialog. Musisz tylko utworzyć tekst EditText, aby użytkownik mógł wprowadzać dane, i ustawić go jako widok AlertDialog. W razie potrzeby można dostosować dozwolony typ danych wejściowych za pomocą setInputType .
Jeśli możesz użyć zmiennej członkowskiej, możesz po prostu ustawić zmienną na wartość EditText i będzie ona utrzymywać się po zamknięciu okna dialogowego. Jeśli nie możesz użyć zmiennej członka, być może będziesz musiał użyć detektora, aby wysłać wartość ciągu we właściwe miejsce. (Mogę edytować i opracowywać więcej, jeśli tego właśnie potrzebujesz).
W twojej klasie:
private String m_Text = "";
W OnClickListener twojego przycisku (lub w funkcji wywoływanej stamtąd):
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;
a następnie zastąpić „to” w alertdialog przezcont
. AlertDialog.Builder builder = new AlertDialog.Builder (cd); final EditText input = new EditText (cd);Dodam do odpowiedzi @ Aarona podejście, które daje możliwość lepszego stylizowania okna dialogowego. Oto dostosowany przykład:
Oto przykładowy układ użyty do utworzenia okna dialogowego EditText:
Wynik końcowy:
źródło
getView()
zefindViewById(android.R.id.content)
i to wszystko działało jak uroku. Wielkie dzięki za udostępnienie :)(ViewGroup)
!@dimen/content_padding_normal
?Co powiesz na ten PRZYKŁAD ? Wydaje się to proste.
źródło
Jeśli chcesz trochę miejsca na
left
iright
odinput
widoku można dodać trochę jak wyściółkadimens.xml
Mam nadzieję, że to pomoże
źródło
resources
?Zauważyłem, że rozszerzenie jest bardziej przejrzyste i wielokrotnego użytku,
AlertDialog.Builder
aby utworzyć niestandardową klasę okna dialogowego. To jest okno dialogowe z prośbą o podanie numeru telefonu. Zaprogramowany numer telefonu można również podać, dzwoniącsetNumber()
przed nawiązaniem połączeniashow()
.InputSenderDialog.java
dialog_input_sender_number.xml
Stosowanie:
źródło
@LukeTaylor: Obecnie mam pod ręką to samo zadanie (tworzenie wyskakującego okienka / okna dialogowego zawierającego tekst edycji).
Osobiście uważam, że w pełni dynamiczna droga jest nieco ograniczająca pod względem kreatywności.
W PEŁNI NIESTANDARDOWY LAYOUT DIALOGU:
Zamiast polegać wyłącznie na Code do tworzenia Dialogu, możesz go w pełni dostosować w następujący sposób:
1) - Utwórz nowy
Layout Resource
plik. Będzie to działać jako Twój Dialog, pozwalając na pełną swobodę twórczą!UWAGA: Zapoznaj się z wytycznymi dotyczącymi projektowania materiałów, aby pomóc utrzymać porządek w czystości.
2) - Podaj identyfikatory wszystkim swoim
View
elementom. W poniższym przykładowym kodzie mam 1EditText
i 2Buttons
.3) - Utwórz za
Activity
pomocąButton
, do celów testowych. Będziemy go napompować i uruchomić Twój Dialog!Bułka z masłem! Pełna swoboda twórcza! Pamiętaj tylko o przestrzeganiu Materiałowych Wytycznych;)
Mam nadzieję, że to komuś pomoże! Daj mi znać, co myślicie!
źródło
To dla mnie praca
Jak zadzwonić? (Nazwa bieżącej działalności)
showForgotDialog (current_activity_name.this);
źródło