Adding Focus to a spinner

2020-02-14 07:50发布

问题:

Here i have a spinner and some text fields below the spinner. when one of the text field has focus, i select an item from spinner and i see the focus is still on that text field, Now what i want to do is, on spinner item selected i want to change focus from that text field to the spinner. Is there any way to set focus to spinner?like,

    @Override
    public void onItemSelected(AdapterView<?> parent, View view,
            int position, long id) {
        //set focus to the spinner 
            }
        }

回答1:

I had a similar problem and found part of the answer here.

However, I also had to set focusable(true) and focusableInTouchMode(true) from my code and not the XML file. I couldn't get it to work until I set the focusable properties in the code. Here is a sample from my project:

spinUoM.setFocusable(true);
spinUoM.setFocusableInTouchMode(true);

spinUoM.setOnFocusChangeListener(new OnFocusChangeListener() {

        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if(hasFocus)
                DialogDefineRecipeActivity.this.spinUoM.performClick();
        }

    });


回答2:

worked in my case doing

    @Override
     public void onItemSelected(final AdapterView<?> parent, View view,
            final int position, long id) {

        parent.post(new Runnable() {
            @Override
            public void run() {
                spinner.requestFocusFromTouch();
            }
        });
    }