我将以下代码用于 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/