android - 如何使用数据绑定(bind)创建焦点更改监听器

标签 android android-databinding android-mvvm

我将以下代码用于 EditText 焦点更改事件及其工作,当我点击一个 EditText 到另一个 EditText 但当我们点击时失败在 EditText 之外点击。我已经添加了 focusable="true"和 focusableInTouchMode="true" 但它不起作用。

@BindingAdapter("onFocusChange")
public static void onFocusChange(EditText 
text, final View.OnFocusChangeListener 
listener) {
   text.setOnFocusChangeListener(listener);
}

public class Handler {
   public View.OnFocusChangeListener 
      getOnFocusChangeListener() {
           return new 
   View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View 
                  view, boolean isFocussed
          {
            //Hide Keyboard
           }
          };
        }
     }

 <data>
  <variable name="handler" type="Handler"/>
</data>
<EditText app:onFocusChange="@{handler.OnFocusChangeListener}"/>

最佳答案

如果您像这样编写 Handler 类,它应该可以工作:

public class Handler {

    public OnFocusChangeListener onFocusChangeListener = new OnFocusChangeListener() {
        @Override
        public void onFocusChange(View view, boolean isFocused) {
            //Hide Keyboard
        }
    };

}

你的布局是这样的:

<layout>

    <data>
        <variable name="handler" type="Handler"/>
    </data>

    <EditText 
        ...
        app:onFocusChangeListener="@{handler.onFocusChangeListener}"
        ... />

</layout>

不要忘记在 Fragment 或 Activity 中设置处理程序变量:

binding.setHandler(new Handler())

关于android - 如何使用数据绑定(bind)创建焦点更改监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53850018/

相关文章:

android - Leanback 焦点问题

java - Android Realm copyToRealmOrUpdate 创建嵌套对象的副本

android - 使用DataBinding库设置背景色资源或为null

android - 何时使用 executePendingBindings() 何时不需要?

android - Android Market如何安装应用程序?

android - 如何在android中的rxjava2中进行错误处理

android - 数据绑定(bind)不适用于选项卡项文本属性

android - 数据绑定(bind)错误 : old values should be followed by new values. 参数 2 必须与参数 3 的类型相同

android - Android 中的 MVVM 存储库

android - 如何从协程返回异步操作到 ViewModel