Android 使EditText在单击按钮时失去焦点
我的活动中有两个Android 使EditText在单击按钮时失去焦点,android,android-edittext,Android,Android Edittext,我的活动中有两个EditText字段和一个done按钮。我希望当用户按下按钮时,EditText两个字段都失去焦点(即光标不应显示在其中任何一个字段上)。我正在使用以下代码: final Button saveButton = (Button) findViewById(R.id.saveButton); saveButton.setOnClickListener(saveButtonListener); private OnClickListener saveButtonListen
EditText
字段和一个done按钮
。我希望当用户按下按钮时,EditText
两个字段都失去焦点(即光标不应显示在其中任何一个字段上)。我正在使用以下代码:
final Button saveButton = (Button) findViewById(R.id.saveButton);
saveButton.setOnClickListener(saveButtonListener);
private OnClickListener saveButtonListener = new OnClickListener() {
@Override
public void onClick(View v) {
Text1.clearFocus();
Text2.clearFocus();
}
}
但是,当我按下“完成”按钮时,光标会出现在
Text1
上,即使我还没有单击任何EditText
。如何使EditText字段在单击按钮时失去焦点,请尝试将代码更改为:
private OnClickListener saveButtonListener = new OnClickListener() {
@Override
public void onClick(View v) {
Text1.clearFocus();
Text2.clearFocus();
saveButton.requestFocus(); //or any other View
}
}
因为作为文档作为关于:
当此视图要放弃焦点时调用。如果焦点被清除
调用onFocusChanged(boolean、int、android.graphics.Rect)
注意:当视图清除焦点时,框架将尝试给予焦点
从顶部到第一个可聚焦视图。因此,如果该视图是
首先从顶部开始,可以集中精力,然后是与
清除焦点将在框架给出
关注这个观点
意味着您必须在单击按钮时将焦点设置为其他视图,因为
Text1
作为布局中的第一个视图您可以在布局中创建一个空的隐藏EditText
元素。宽度为0,高度为0的东西。然后在单击中可以调用hiddenEditText.requestFocus()
单击按钮时使用以下代码:-
InputMethodManager imm = (InputMethodManager) view.getContext()
.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
您可以尝试此代码,只需将焦点移到另一个视图
private OnClickListener saveButtonListener = new OnClickListener() {
@Override
public void onClick(View v) {
saveButton.requestFocus(); //any other View
}
}
我能找到的最好办法是
private void listenToButton(){
someButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
v.requestFocusFromTouch();
//Proceed with things
}
}
}
这对我很有用:
@Override
public void onClick(View v) {
//To hide soft keyboard
InputMethodManager im = (InputMethodManager) getApplicationContext().getSystemService(Context.INPUT_METHOD_SERVICE);
im.hideSoftInputFromWindow(getWindow().getDecorView().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
v.requestFocusFromTouch();
}
为按钮设置这些行,按钮将起作用
View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
v.setFocusable(true);
v.setFocusableInTouchMode(true);
v.requestFocus();
......
}
};
button.setOnClickListener(listener);
适用于我:)1)创建对编辑文本的静态引用。2) 在setOnFocusChange方法中,将静态编辑文本设置为获得焦点的编辑文本3)在按钮单击方法中,使用此引用了解上次包含焦点的人,即使他们的焦点没有因为按钮单击而丢失。对我来说,它像一个字符一样工作。它将数字键盘更改为其他奇数数字键盘。它只在第一次起作用。然后奇怪的事情发生了