我试图在setOnFocuslistener上失去焦点时隐藏我的键盘。由于某种原因,它不起作用......这是我的xml:
<EditText
android:id="@+id/AgePicker"
android:layout_width="113dp"
android:layout_column="2"
android:layout_columnSpan="2"
android:layout_gravity="left|bottom"
android:layout_row="4"
android:background="#ffffff"
android:clickable="true"
android:focusable="true"
android:hint="@string/edit_message"
android:singleLine="true"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@color/black_overlay" />
和我的代码:
setAge.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus) {
String sAge = setAge.getText().toString();
Age = Integer.parseInt(sAge);
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(setAge.getWindowToken(), 0);
if (Age < 0) {
Toast.makeText(DietActivity.this,
"Enter Computable Values", Toast.LENGTH_SHORT)
.show();
}
}
}
});
我也在我的xml中使用这些:
android:focusable="true"
android:focusableInTouchMode="true"
请帮帮我。我想要的只是当edittext失去焦点时键盘隐藏
答案 0 :(得分:1)
嗯,这有点琐碎,但我会发布我的答案,也许它会帮助其他游泳池灵魂...... 这是我的代码:
setAge.setOnFocusChangeListener(new OnFocusChangeListener(){
@Override
public void onFocusChange(View v, boolean hasFocus) {
String sAge = setAge.getText().toString();
if (isNumeric(sAge) ) {
Age = Integer.parseInt(sAge);
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(setAge.getWindowToken(), 0);
if (Age < 0) {
Toast.makeText(DietActivity.this,
"Enter Computable Values", Toast.LENGTH_SHORT)
.show();
}
}
}
});
答案 1 :(得分:0)
这取决于当前有什么焦点...如果它的另一个editText需要关注,那么这可能会调出键盘...尝试明确地将焦点放在另一个元素上。