Ocultar / Mostrar programaticamente o teclado virtual Android [duplicado]
Possible Duplicate:
Fechar / ocultar o teclado virtual Android
Primeira coisa que eu já viest fio. Eu tentei métodos aceitos dados lá .. mas nada funcionou para mim ..
Tenho duas telas no meu aplicativo.
Primeiro, temos 2 EditText's - um para nome de usuário e outro para senha O segundo tem um ListView e um EditText - para filtrar o listViewNa minha primeira tela, quero que o nome de usuário EditText tenha foco na inicialização e o Teclado fique visívelsta é a minha implementação (simplificada removendo códigos desnecessários / não relacionados
app_login.xml<LinearLayout android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:paddingLeft="20dip"
android:paddingRight="20dip">
<EditText android:id="@+id/username" android:singleLine="true"
android:layout_width="fill_parent"
android:layout_height="wrap_content" android:hint="Username"
android:imeOptions="actionDone" android:inputType="text"
android:maxLines="1"/>
<EditText android:id="@+id/password" android:password="true"
android:singleLine="true"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:hint="Password" />
</LinearLayout>
AppLogin.javaclass AppLogin extends Activity{
private EditText mUserNameEdit = null;
private EditText mPasswordEdit = null;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.app_login);
mUserNameEdit = (EditText) findViewById(R.id.username);
mPasswordEdit = (EditText) findViewById(R.id.password);
/* code to show keyboard on startup.this code is not working.*/
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(mUserNameEdit, InputMethodManager.SHOW_IMPLICIT);
}//End of onCreate()
}
Bem, o teclado não está aparecendo na inicialização. E meu design exige muito um teclado lá ..
Agora parasecond page .. Eu já disse que tenho um listView e EditText lá ..Eu quero que meu teclado fique oculto na inicialização para que apareça quando o usuário tocar no editText..Você acredita nisso? o que eu tentei teclado @soft está aparecendo quando carrego a atividade .. eu não sou capaz de esconder ..
app_list_view.xml<LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent"
android:orientation="vertical" >
<EditText android:id="@+id/filter_edittext"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:hint="Search" android:inputType="text" android:maxLines="1"/>
<ListView android:id="@id/android:list" android:layout_height="fill_parent"
android:layout_weight="1.0" android:layout_width="fill_parent"
android:focusable="true" android:descendantFocusability="beforeDescendants"/>
</LinearLayout>
AppList.javapublic class MyListActivity extends ListActivity{
private EditText mfilterEditText;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.app_list_view);
mFilterEditText = (EditText) findViewById(R.id.filter_edittext);
InputMethodManager imm = InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(mFilterEditText.getWindowToken(), 0);
}
}
Para simplifica
Na página de login (primeira página) Quero que meu teclado fique visível na inicialização. No SecondPage Quero que o teclado seja oculto primeiro, apenas para aparecer quando o usuário tocar em editTextE meu problema é que estou recebendo exatamente o oposto nas duas ocasiões ... Espero que alguém tenha enfrentado esse problema antes ... BTT Estou testando no simulador e no telefone HTC Desire ..
RESULTADO FINALBem, eu consegui funcionar, com a ajuda de todos os amigos aqu
1. Para mostrar o teclado na inicialização
Duas respostas funcionaram para mim.Um fornecido pelo @CapDroid, que é usar um manipulador e publicá-lo com atraso ..
mUserNameEdit.postDelayed(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
InputMethodManager keyboard = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
keyboard.showSoftInput(mUserNameEdit, 0);
}
},50);
s respostas @Second são fornecidas por @Dyarish. Na verdade, ele vinculou a outro segmento SO, que eu não tinha visto antes. Mas o engraçado é que, essa solução é fornecida no tópico que referenciei no início. E ainda não experimentei porque tinha zero votos em um tópico em que todas as outras postagens tinham muitos votos .. Altura de tolice ..
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
Para mim, a segunda solução parecia legal, então decidi ficar com ela ... mas a primeira certamente funciona. A resposta de @ Dyarish também contém um truque inteligente do uso de um ScrollView abaixo de EditText para dar ao EditText o foco ... Mas eu não tentei, mas deve funcionar. Não é legal ..
2. Para ocultar o teclado na atividade, inicie
Apenas uma resposta funcionou para mim, fornecida pela @Dyarish. E a solução é usar as configurações focusableInTouchMode em xml para o layout que contém os editText. Isso fez o truque
<LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent"
android:orientation="vertical" android:focusableInTouchMode="true">
<EditText android:id="@+id/filter_edittext"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:hint="Search" android:inputType="text" android:maxLines="1"/>
<ListView android:id="@id/android:list" android:layout_height="fill_parent"
android:layout_weight="1.0" android:layout_width="fill_parent"
android:focusable="true" android:descendantFocusability="beforeDescendants"/>
</LinearLayout>
De qualquer forma, acabo usando a resposta de Dyarish nos dois casos. Então, eu estou concedendo a recompensa a ele .. Obrigado a todos os outros amigos que tentaram me ajudar ..