300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > android 编辑框失去焦点 关于android:editText并没有失去焦点

android 编辑框失去焦点 关于android:editText并没有失去焦点

时间:2020-11-29 11:31:47

相关推荐

android 编辑框失去焦点 关于android:editText并没有失去焦点

当我点击它时,editText没有失去焦点在我的应用程序中,它始终具有橙色边框和黑色线条光标..

我根据这个围绕editText做了一个LinearLayout:

停止EditText在Activity启动时获得焦点

因此它不会专注于应用程序的启动..

这是我的代码:

final EditText et = (EditText)findViewById(R.id.EditText01);

final InputMethodManager imm = (InputMethodManager) getSystemService(

INPUT_METHOD_SERVICE);

et.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {

imm.showSoftInput(et, InputMethodManager.SHOW_IMPLICIT);

}

});

et.setOnFocusChangeListener(new View.OnFocusChangeListener() {

public void onFocusChange(View v, boolean hasfocus) {

if(hasfocus) {

imm.showSoftInput(et, InputMethodManager.SHOW_IMPLICIT);

} else {

imm.hideSoftInputFromWindow(et.getWindowToken(), 0);

}

}

});

但是,当我点击editText之外的任何地方时,似乎没有调用onFocusChange!

我遇到了几乎相同的事情。 据我所知,当焦点通过触摸事件从一个EditText移动到另一个EditText时,不会生成onFocusChange()。 也许@Overriding onTouch()可能有用吗? 不知道副手。

这是有问题的。 现在我们必须修改World\{EditText}的代码才能使一个edittext工作。 搞什么鬼...

这很简单。 您可以将以下内容放在LinearLayout或其他任何其他内容中:

android:focusableInTouchMode="true"

这是一个很好的答案。 我在RelitiveLayout中使用它,因此没有EditText始终具有焦点。+1

覆盖Activity.dispatchTouchEvent():

@Override

public boolean dispatchTouchEvent(MotionEvent ev) {

if (ev.getAction() == MotionEvent.ACTION_DOWN) {

View view = getCurrentFocus();

if (view != null && view instanceof EditText) {

Rect r = new Rect();

view.getGlobalVisibleRect(r);

int rawX = (int)ev.getRawX();

int rawY = (int)ev.getRawY();

if (!r.contains(rawX, rawY)) {

view.clearFocus();

}

}

}

return super.dispatchTouchEvent(ev);

}

这样,无论何时有人点击任何地方,您都可以控制,而且只有代码中的一个点。

必要时在根布局中添加android:focusableInTouchMode="true"

创建一个onClick侦听器,可能在您的XML布局中侦听后台LinearLayout中的点击。 在您将其作为您正在使用的活动的实例变量之后,您可以在EditText上调用.clearFocus()。

没有.cancelFocus()方法......

我想我的意思是.clearFocus()

您可以通过调用方法将焦点设置为其他字段来从EditText中删除焦点。

假设我在点击完成按钮时将焦点设置为后退按钮,然后在完成按钮单击侦听器内的后退按钮上调用方法。

而且你的问题已经解决了。

back.requestFocusFromTouch();

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。