在Android的选择时将焦点设置微调

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)


isu*_*mit 3

我在 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 作为焦点。这样用户就不会在屏幕上看到任何聚焦的控件。