Come fermare una tastiera virtuale che mostra automaticamente quando il fuoco si è cambiato (evento OnStart)

Sto sviluppando per un tablet con Android 2.2.

Ho un form che sto usando per i nuovi e modificabile istanze. Se modificabile, voglio interrompere l’utente alla modifica di alcuni campi. Riesco nel mio onStart-evento, l’impostazione del txt.setFocusableInTouchMode(false).
Questo impone la messa a fuoco per la prossima attivabile EditText nella mia forma (che è grande), ma durante l’esecuzione, la tastiera virtuale che appare automaticamente per il EditText con la messa a fuoco.
Qualcuno sa come fermare questo?

Ecco il codice (chiamato in onStart evento):

private void PopulateFields(){
    TextView txtTitle = (TextView) this.findViewById(R.id.txtEquipmentEditTitle);
    AutoCompleteTextView txtMake = (AutoCompleteTextView) this.findViewById(R.id.autEquipmentEditMake);
    AutoCompleteTextView txtModel = (AutoCompleteTextView) this.findViewById(R.id.autEquipmentEditModel);
    EditText txtDesc = (EditText) this.findViewById(R.id.txtEquipmentEditDesc);
    TextView txtDeptKey = (TextView) this.findViewById(R.id.txtEquipmentEditDeptKey);
    EditText txtSerial = (EditText) this.findViewById(R.id.txtEquipmentEditSerialNo);
    EditText txtBarCode = (EditText) this.findViewById(R.id.txtEquipmentEditBarCode);

    txtTitle.setText("Edit Equipment");
    txtMake.setText(make);
    txtModel.setText(model);
    txtDesc.setText(desc);
    txtDeptKey.setText(Integer.toString(deptKey));
    txtSerial.setText(serial);
    txtBarCode.setText(barCode);
    txtMake.setEnabled(false);
    txtModel.setEnabled(false);
    txtDesc.setEnabled(false);
    txtMake.setClickable(false);
    txtMake.setFocusableInTouchMode(false);
    txtModel.setFocusableInTouchMode(false);
    txtDesc.setFocusableInTouchMode(false);
    txtMake.setFocusable(false);
    txtModel.setFocusable(false);
    txtDesc.setFocusable(false);
}

 

4 Replies
  1. 62

    Forse questo vi aiuterà a:

    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
    • Ciò ha risolto il mio problema per il xoom (Android 3.0.1). Ho aggiunto la riga sopra la mia onCreate() metodo. Io non sono ancora sicuro di quello che un “soft input”.
    • Soft input è la tastiera su schermo. L’alternativa è una vera e propria tastiera fisica.
    • Questo non sembra avere alcun effetto su Android 2.2.Non SOFT_INPUT_STATE_ALWAYS_HIDDEN.
    • La risposta giusta è la a stackoverflow.com/a/1845307/347565
    • È inoltre possibile ottenere lo stesso effetto con l’aggiunta di android:windowSoftInputMode=”stateHidden” sulla tua attività nel manifesto
  2. 11

    Possiamo Nascondere la device Keybord tramite le seguenti modalità che dipende totalmente dalla necessità di situation_

    First Way_

    EditText userId;
        /*
         * When you want that Keybord not shown untill user clicks on one of the EditText Field.
         */
        getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

    Second Way_
    InputMethodManager

        /*
         * When you want to use service of 'InputMethodManager' to hide/show keyboard
         */
        InputMethodManager inputManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    
        inputManager.hideSoftInputFromWindow(userId.getWindowToken(),
                InputMethodManager.HIDE_NOT_ALWAYS);

    Third Way_

        /*
         * Touch event Listener
         * When you not want to open Device Keybord even when user clicks on concern EditText Field.
         */
        userId.setOnTouchListener(new OnTouchListener(){
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                int inType = userId.getInputType(); //backup the input type
                userId.setInputType(InputType.TYPE_NULL); //disable soft input
                userId.onTouchEvent(event); //call native handler
                userId.setInputType(inType); //restore input type
                userId.setFocusable(true);
                return true; //consume touch even
            }
        });

    Conto di tutto quanto sopra ways_ si può anche definire windowSoftInputMode in applicazionesmanifesto` file_

    <manifest ... >
     <application ... >
        <activity 
            android:windowSoftInputMode="stateHidden|stateAlwaysHidden"
            ... >
            <intent-filter>
               ...
            </intent-filter>
        </activity>
    
     </application>
    </manifest>

    Spero che questo aiuti tutti!

  3. 4

    Se si desidera che questo per un particolare EditText questo lavoro.

    editText.setShowSoftInputOnFocus(false);

  4. -1

    questa è la risposta:
    Nel AndroidManifest.xml aggiungere un attributo di Attività:

            <activity android:name=".MyActivity" android:windowSoftInputMode="adjustPan"> </activity>
    • Credo che ti sei perso la domanda nella sua interezza, questo non nascondere la tastiera

Lascia un commento