【问题标题】:how can full clear focus in editText , just like press button DONE on softkeyboard如何在 editText 中完全清除焦点,就像按下软键盘上的按钮 DONE
【发布时间】:2020-04-21 19:01:54
【问题描述】:

我在编辑文本焦点更改时指定了不同的背景,但clearFocus() 似乎没有效果,因为背景没有更改为正确的状态。

【问题讨论】:

  • 能否详细说明您的问题
  • 请发布您尝试过的内容。除非我们看到代码,否则很难说什么。

标签: android button android-edittext android-softkeyboard


【解决方案1】:

首先,我们可以使用cleareFocus 方法来移除焦点。

editTextView.clearFocus()

但是当这个方法被调用时,正如源码注释所说:

当不处于触摸模式时,框架将在焦点被清除后尝试将焦点赋予从顶部开始的第一个可焦点视图。因此,如果这 视图是从顶部开始的第一个可以获取焦点的,然后是所有回调 与清除焦点相关的将被调用,之后框架将 关注这个观点。

所以在你调用它之后,第一个元素将保持焦点。所以我们应该在父布局中设置touch-mode true。

<LinearLayout
    android:focusable="true" 
    android:focusableInTouchMode="true" 
    android:layout_width="0px" 
    android:layout_height="0px"/>
<EditText android:id="@+id/et"
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"
    />

【讨论】:

  • 如果你觉得答案不错,也可以点赞我的答案。谢谢
【解决方案2】:

再创建一个 EditText(edit_hidden) 并设置可见性 GONE 或 INVISIBLE

当您想从 EditText(edit_your) 中清除焦点时,请使用此代码

 edit_your.clearFocus();
 edit_hidden.requestFocus();

使用 Action Done 事件

edit_your.setOnEditorActionListener(new OnEditorActionListener() {        
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        if(actionId==EditorInfo.IME_ACTION_DONE){
               edit_your.clearFocus();
               edit_hidden.requestFocus();
        }
    return false;
    }
}); 

【讨论】:

  • 好吧,首先,我尝试了你的方法,但焦点仍然由可见的获得
  • 好像只有可见的小部件才能获得焦点
猜你喜欢
  • 2013-07-03
  • 1970-01-01
  • 2011-02-03
  • 2020-10-07
  • 2013-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-13
相关资源
最近更新 更多