通过检查此博客文章中的键盘如何找到下一个焦点并通过子类化来解决EditText
:
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.widget.EditText;
public class MyEditText extends EditText {
public MyEditText(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public MyEditText(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyEditText(Context context) {
super(context);
}
@Override
public View focusSearch(int direction) {
View v = super.focusSearch(direction);
if (v != null) {
if (v.isEnabled()) {
return v;
} else {
// keep searching
return v.focusSearch(direction);
}
}
return v;
}
}
更多细节:
ViewGroup
的实现focusSearch()
使用FocusFinder,它调用addFocusables()
. 的ViewGroup
实现测试可见性,而View
实现测试可聚焦性。没有测试启用状态,这就是我在MyEditText
上面添加这个测试的原因。