web-dev-qa-db-de.com

Tastatur automatisch anzeigen

Bitte erläutern Sie mir das Problem mit der Soft-Tastatur. Zum Beispiel habe ich einen EditText zu meiner Aktivität oder Dialogfragment oder Fragmentaktivität, was auch immer ...

<EditText
    Android:id="@+id/edPswrd"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:ems="10"
    Android:inputType="textPassword" >

    <requestFocus />
</EditText>

Wenn es zum ersten Mal angezeigt wird, sehe ich die Soft-Tastatur nicht und muss EditText drücken, um den Fokus zu erhalten, und die Tastatur wird angezeigt. Andere Aktivitäten sind anders, wenn sie auf dem Bildschirm angezeigt wird, wird die Tastatur ohne Hilfe geladen 

<requestFocus />

bedeutet, dass EditText fokussiert ist und die Tastatur angezeigt wird, aber ich bin falsch.

Wie soll ich steuern, welche Komponente den Fokus erhält und die Tastatur automatisch erscheint?.

37
Foenix

Ich denke, es ist ein Fehler oder eine Funktion, die versucht, Ihnen die gesamte Aktivität zu präsentieren, ohne sie zunächst mit der Soft-Tastatur zu verdecken. Ich habe einmal nach Informationen darüber gesucht, aber leider nichts aus einer wirklich zuverlässigen Quelle gefunden.

Um die Soft-Tastatur anzuzeigen, können Sie Folgendes tun:

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

Ich habe auch diesen Code gesehen, der die Soft-Tastatur zwingen sollte, unmittelbar nach dem Start der Aktivität sichtbar zu werden, es aber nie probiert haben:

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);

Und wenn Sie die Soft-Tastatur ausblenden möchten, können Sie Folgendes tun:

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);

Hoffentlich hilft das.

Bearbeiten:

Für eine DialogFragment sollte dies funktionieren: In der onCreateView()-Methode machen Sie Folgendes:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_id, container);
    EditText editText = (EditText)view.findViewById(R.id.edit_text_id);

    // show soft keyboard
    editText.requestFocus();
    getDialog().getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE);

    return view;
}
59
andr

Öffnen Sie die Android Manifest-Datei.

Suchen Sie nach dem Aktivitäts-Tag

<activity  
        Android:name="com.example.framework.MainActivity"
        Android:label="@string/app_name" 
        Android:windowSoftInputMode="stateVisible"       //Add this line    
         >
        <intent-filter>
            <action Android:name="Android.intent.action.MAIN" />

            <category Android:name="Android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

Fügen Sie die Zeile Android: windowSoftInputMode = "stateVisible" wie oben gezeigt hinzu

29
manpreet singh

Ich weiß, dass dies bereits beantwortet wurde, aber ich habe einen Weg gefunden, die akzeptierte Antwort in onCreateDialog anstatt nur in onCreateView auszuführen. Wenn Sie mit dem Builder fertig sind, müssen Sie vor der Rückkehr Folgendes tun:

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());  
// blah blah blah do builder stuff here like setTitle, setView, etc

Dialog d = builder.create();

Hier ist der wichtige Teil:

d.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
return d;
15
MidasLefko

zu onCreate oder onStart () hinzufügen;

myView.requestFocus();
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
5

Versuche dies

@Override
public void onResume() {
   super.onResume();
   final View v = getDialog().findViewById(R.id.edit_text_id);
   v.post(new Runnable() {
      @Override
      public void run() {
        v.requestFocus();
        InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
        if (imm != null) imm.showSoftInput(v, InputMethodManager.SHOW_IMPLICIT);
      }
   });
 }
2
ls.illarionov

Das habe ich gemacht und es funktioniert schön ...

Du kannst den ... benutzen 

Dienstprogramme.showSoftKeyboard (...)

überall in Ihrem Code

public final class Utilities {

  // Shows the soft keyboard. V on which view (typically EditText) to focus the keyboard input
  public static void showSoftKeyboard(Activity activity, EditText editText) 
  {
      InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
      imm.showSoftInput(editText, InputMethodManager.SHOW_FORCED);
  }
}

/**
 * Called when user clicks/touches the search button
 * @param v The clicked/touched view (EditText)
 */
protected void onSearchButtonClick(View v)
{
    EditText seekTopic = (EditText) findViewById(R.id.SeekTopicBox);
    setActivityContent(seekTopic.getText().toString());
}

Das 

onSearchButtonClick ()

methode gehört zu der Aktivität, die das EditView enthält, das ich bearbeiten möchte und deshalb brauche ich die Soft-Tastatur ..

HTH

0
Sold Out

Ich empfehle den folgenden Link. Ich bin den Schritten gefolgt, die unter dem folgenden Link aufgeführt sind. Er funktioniert einwandfrei und ist eine sehr gute Antwort, die in sehr einfachen Schritten ausgeführt wird. Gutschrift geht an die beantwortete Person. Ich hoffe, es hilft der Person, die sich mit der Tastatur-Popup-Funktion bei Dialogaktivitäten beschäftigt.

DialogFragment und erzwingen, Tastatur anzuzeigen

0
MohanRaj S

Das hat bei mir funktioniert - 

Erstellen Sie Ihre eigene EditText-Klasse und überschreiben Sie die folgende Methode: 

public class FocussableEditText extends EditText {

    public FocussableEditText(Context context) {
        super(context);
    }

    public FocussableEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public FocussableEditText(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    public void onWindowFocusChanged(boolean hasWindowFocus) {
        super.onWindowFocusChanged(hasWindowFocus);
        if (hasWindowFocus) {
            InputMethodManager imm = (InputMethodManager)getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.showSoftInput(this, InputMethodManager.SHOW_FORCED);
        }
    }
}

http://debuggingisfun.blogspot.in/2014/08/Android-show-soft-keyboard.html

0
v01d

für mich durch Hinzufügen dieser Zeile Android: windowSoftInputMode = "stateVisible" in Ihrem Manifest so 

**<activity
            Android:name=".mmmmm.zzzzzzz.yyyyyy.xxxxxx"
            Android:windowSoftInputMode="stateVisible"
            Android:label="@string/title_activity_print_recharge"></activity>**

so habe ich es gelöst

0
other Tall guy