wrap_content tool studio layout_width interfaces diseƱo create android android-layout android-emulator

tool - layout android studio



android: windowSoftInputMode="stateVisible" no funciona (4)

Como encontré aquí , puede mostrar el teclado cuando la actividad comienza haciendo lo siguiente:

EditText editText = (EditText) findViewById(R.id.editText1); InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); mgr.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);

Cambié su código de muestra para tener su ID de EditText, así que debería funcionar

Me gustaría abrir el teclado virtual cuando comienza la actividad y encontré que

android:windowSoftInputMode="stateVisible"

no funciona

Para estar seguro, creé un nuevo proyecto (el predeterminado "Hola mundo") e hice lo siguiente:

  1. agregado el windowSoftInputMode al manifiesto.
  2. Después de eso no funcionó, agregué un campo EditView al diseño
  3. Después de eso no funcionó, agregué

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE) al procedimiento onCreate.

Lo compilé con Android2.3.3 y traté de ejecutarlo en mi dispositivo Galaxy S2 y en el emulador de Android4 y todavía sin teclado.

Mi archivo manifiesto:

<?xml version="1.0" encoding="utf-8"?>

<uses-sdk android:minSdkVersion="9" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name"> <activity android:name=".HelloworldActivity" android:label="@string/app_name" android:windowSoftInputMode="stateVisible"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application>

Mi diseño main.xml:

<?xml version="1.0" encoding="utf-8"?>

<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <EditText android:id="@+id/editText1" android:layout_width="match_parent" android:layout_height="wrap_content" > <requestFocus /> </EditText>

Mi código:

public class HelloworldActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); } }


Puede forzar el primer enfoque en la vista EditText ejecutando:

final EditText edit = (EditText) findViewById(R.id.editText1); edit.post(new Runnable() { @Override public void run() { edit.requestFocus(); } });

Esto debería abrir el teclado en el inicio de la actividad.


¿Utiliza el teclado predeterminado de Android? Si lo haces, pruébalo en un dispositivo diferente, sé que tiene algunos problemas


Es simple. Lo he hecho y funciona como su requisito.

  1. No haga nada con el manifiesto, déjelo como está mientras crea el nuevo proyecto nuevo.

  2. Ahora define inputmanager.

    public static InputMethodManager imm; imm = (InputMethodManager)this.getSystemService(Context.INPUT_METHOD_SERVICE);

  3. Ahora, aquí el salario EditText es mi EditText y estoy mostrando el teclado al comienzo de esa actividad.

    salaryEditText.setHint("select Salary/Wage"); salaryEditText.setFilters(new InputFilter[] {new DecimalDigitsInputFilter(2)}); // Ignore this line if(!(imm==null)) imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,1);

Eso te ayudará a mostrar el teclado mientras comienza la actividad.

Para cerrar el teclado en el acabado de la actividad, vea el siguiente código:

ponga este código en blanco mientras termina la actividad.

imm.hideSoftInputFromWindow(salaryEditText.getWindowToken(), 0);

Espero que esto solucione tu problema. Si no, házmelo saber.

Disfrutar. :)