Parece uma boa oportunidade para usar um AlertDialog .
Por mais básico que pareça, o Android não possui uma caixa de diálogo integrada para fazer isso (tanto quanto eu sei). Felizmente, é apenas um pouco de trabalho extra para criar um AlertDialog padrão. Você simplesmente precisa criar um EditText para o usuário inserir dados e configurá-lo como a exibição do AlertDialog. Você pode personalizar o tipo de entrada permitido usando setInputType , se necessário.
Se você puder usar uma variável de membro, você pode simplesmente definir a variável com o valor do EditText, e ele persistirá após o fechamento da caixa de diálogo. Se você não pode usar uma variável de membro, pode ser necessário usar um ouvinte para enviar o valor da string para o lugar certo. (Posso editar e elaborar mais, se é isso que você precisa).
Dentro da sua turma:
private String m_Text = "";
Dentro do OnClickListener do seu botão (ou em uma função chamada a partir daí):
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;
e, em seguida, substitua "this" no alertdialog porcont
. Construtor AlertDialog.Builder = novo AlertDialog.Builder (cont); EditText final input = novo EditText (cont);Acrescentarei à resposta do @ Aaron com uma abordagem que oferece a oportunidade de estilizar a caixa de diálogo de uma maneira melhor. Aqui está um exemplo ajustado:
Aqui está o exemplo de layout usado para criar a caixa de diálogo EditText:
O resultado final:
fonte
getView()
comfindViewById(android.R.id.content)
e tudo funcionou como charme. Muito obrigado pela partilha :)(ViewGroup)
!@dimen/content_padding_normal
?E esse EXEMPLO ? Parece simples.
fonte
Se você quiser algum espaço no
left
eright
deinput
vista, você pode adicionar algum estofamento comodimens.xml
Espero que ajude
fonte
resources
?Achei mais limpo e reutilizável estender
AlertDialog.Builder
para criar uma classe de diálogo personalizada. É para uma caixa de diálogo que pede ao usuário para inserir um número de telefone. Um número de telefone predefinido também pode ser fornecido ligandosetNumber()
antes de ligarshow()
.InputSenderDialog.java
dialog_input_sender_number.xml
Uso:
fonte
@LukeTaylor: Atualmente, tenho a mesma tarefa em mãos (criando um pop-up / caixa de diálogo que contém um EditText).
Pessoalmente, acho que a rota totalmente dinâmica é um tanto limitadora em termos de criatividade.
LAYOUT DE DIÁLOGO INTEIRAMENTE PERSONALIZADO:
Em vez de confiar inteiramente no Code para criar o Diálogo, você pode personalizá-lo totalmente da seguinte forma:
1) - Crie um novo
Layout Resource
arquivo .. Isso funcionará como seu Diálogo, permitindo total liberdade criativa!NOTA: Consulte as diretrizes de design de material para ajudar a manter as coisas limpas e pontuais.
2) - Dê IDs para todos os seus
View
elementos. No meu código de exemplo abaixo, eu tenho 1EditText
e 2 , para fins de teste. Vamos fazê-lo aumentar e iniciar seu Diálogo!Buttons
.3) - Crie um
Activity
com umButton
Pedaco de bolo! Liberdade criativa total! Apenas certifique-se de seguir as Diretrizes materiais;)
Espero que isso ajude alguém! Deixe-me saber o que vocês pensam!
fonte
É trabalho pra mim
Como ligar? (Nome da atividade atual)
showForgotDialog (current_activity_name.this);
fonte