hideSoftInputFromWindow nicht funktioniert?
Für einige EditText
Ansichten möchte ich verwenden Sie eine benutzerdefinierte Tastatur statt mit der soft.
Das problem ist wenn ich auf eine EditText
zum ersten mal beide Tastaturen angezeigt werden. Wenn ich auf das zweite mal auf der soft-Tastatur endlich disappeares.
Was könnte der Grund für ein solches Verhalten?
Hier ist der code, den ich verwenden:
package pkleczek.profiwan.keyboards;
import android.app.Activity;
import android.inputmethodservice.KeyboardView;
import android.text.InputType;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnFocusChangeListener;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
public abstract class CustomKeyboard {
/** A link to the KeyboardView that is used to render this CustomKeyboard. */
protected KeyboardView mKeyboardView;
/** A link to the activity that hosts the {@link #mKeyboardView}. */
protected Activity mHostActivity;
/** Returns whether the CustomKeyboard is visible. */
public boolean isCustomKeyboardVisible() {
return mKeyboardView.getVisibility() == View.VISIBLE;
}
/**
* Make the CustomKeyboard visible, and hide the system keyboard for view v.
*/
public void showCustomKeyboard(View v) {
mKeyboardView.setVisibility(View.VISIBLE);
mKeyboardView.setEnabled(true);
if (v != null) {
InputMethodManager inputManager = (InputMethodManager) mHostActivity
.getSystemService(Activity.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(v.getWindowToken(), 0);
}
}
/** Make the CustomKeyboard invisible. */
public void hideCustomKeyboard() {
mKeyboardView.setVisibility(View.GONE);
mKeyboardView.setEnabled(false);
}
/**
* Register <var>EditText<var> with resource id <var>resid</var> (on the
* hosting activity) for using this custom keyboard.
*
* @param resid
* The resource id of the EditText that registers to the custom
* keyboard.
*/
public void registerEditText(int resid) {
EditText edittext = (EditText) mHostActivity.findViewById(resid);
edittext.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
showCustomKeyboard(v);
} else {
hideCustomKeyboard();
}
}
});
edittext.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
showCustomKeyboard(v);
}
});
edittext.setInputType(edittext.getInputType()
| InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
}
}
InformationsquelleAutor Paweł Kłeczek | 2014-02-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie die folgende Bedingung in Ihrem InputMethodManager code vor
inputManager.hideSoftInputFromWindow(v.getWindowToken(), 0);
Linie:Ich es im ListFragment zum ausblenden der Standard-Tastatur. Erst wenn ich drücken Sie eine EditText und Tastatur angezeigt wird, und wenn auf onScrollStateChanged ich es verstecken.
Können Sie auch versuchen, das InputMethodManager - code, der in die onClickListener der EditText und dann rufen Sie Ihren showCustomKeyboard() Methode.
Setzen eine Sonst Anweisung und Log in es nach die
if (v != null)
vielleicht IhrView v
ist null.hideSoftInputFromWindow()
Methoden genannt wurden.Versuchen
setOnTouchListener()
stattsetOnClickListener()
für Ihr EditText. Setzen Sie Log in Ihren Methoden, dies zeigen Sie am besten, wenn Sie tatsächlich aufgerufen werden.Huh.. Keine Fortschritte. Protokoll zeigt, dass alle Methoden aufgerufen werden, aber trotzdem die soft-Tastatur disappeares nur nachdem ich auf
EditText
zum zweiten mal...InformationsquelleAutor taxo
Die Lösung von Rotemmiz in das Thema Nah - /ausblenden der Android Soft-Tastatur für mich gearbeitet.
Einem abstract:
InformationsquelleAutor Paweł Kłeczek