isu*_*mit 7 android spinner android-edittext
我有多个的EditText和微调框控件垂直滚动布局.问题是,当我选择的选择屏幕滚动到最后一个的EditText后,被此微调之前编辑的任何微调选项.重点仍然与过去的EditText我编辑.有没有一种方法我可以保持专注与当前选择的微调.
我在寻找可以从布局XML或一些通用的方法全部纱厂实施适用于所有纺纱的解决方案.
小智 6
这是我的解决方案。
mSpinner.setFocusableInTouchMode(true);
mSpinner.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
if (mSpinner.getWindowToken() != null) {
mSpinner.performClick();
}
}
}
});
Run Code Online (Sandbox Code Playgroud)
我在 Ryderz 答案的帮助下解决了这个问题。这是代码:
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
scrollView = (ScrollView) findViewById(R.id.sv_main);
scrollView.setOnTouchListener(new OnTouchListener() {
// to solve focus problem on scrolling
public boolean onTouch(View v, MotionEvent event) {
IBinder windowToken = null;
if (myEditText1.hasFocus()) {
myEditText1.clearFocus();
windowToken = myEditText1.getWindowToken();
}
if (myEditText2.hasFocus()) {
myEditText2.clearFocus();
windowToken = myEditText2.getWindowToken();
}
if (myEditText3.hasFocus()) {
myEditText3.clearFocus();
windowToken = myEditText3.getWindowToken();
}
if (windowToken != null) {
imm.hideSoftInputFromWindow(windowToken, 0);
}
scrollView.requestFocusFromTouch();
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
然后我为我的 textView 设置 android:focusable="true" ,以便在滚动时,当焦点从 editText 中移除时,可以选择 Textview 作为焦点。这样用户就不会在屏幕上看到任何聚焦的控件。