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?.
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;
}
Ö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
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;
zu onCreate oder onStart () hinzufügen;
myView.requestFocus();
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
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);
}
});
}
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
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.
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
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