在使用TalkBack时发现不会进入到setOnTouchListener的onTouch()方法,后面用了setOnClickListener代替。
但是setOnClickListener需要两次点击才能触发OnClick()方法。
解决如下:
在.xml文件下加入:
android:focusable="true"
android:focusableInTouchMode="false"
完整代码:
<EditText
android:id="@+id/ed"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:focusable="true"
android:focusableInTouchMode="false"
android:hint="HelloWorld"
/>
EditText ed = findViewById(R.id.ed);
在OnClick()方法中加入:
ed.setFocusableInTouchMode(true);
ed.requestFocus();
ed.requestFocusFromTouch();
完整代码:
ed.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ed.setFocusableInTouchMode(true);
ed.requestFocus();
ed.requestFocusFromTouch();
//你的处理逻辑
}
});
}
最后,如果要实现弹出软件盘:
实现方法:
private void hideKeyBoard(View view,boolean b) {
if(b){
((InputMethodManager) getSystemService(INPUT_METHOD_SERVICE))
.hideSoftInputFromWindow(view.getWindowToken(),
InputMethodManager.HIDE_NOT_ALWAYS);//关闭输入法
}else if(!b) {
((InputMethodManager) getSystemService(INPUT_METHOD_SERVICE))
.showSoftInput(view,0);
}
}
在onClick()中加入:
hideKeyBoard(ed,false);
完整代码:
ed.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ed.setFocusableInTouchMode(true);
ed.requestFocus();
ed.requestFocusFromTouch();
hideKeyBoard(ed,false);
//你的处理逻辑
}
});
}