/ / Задайте насочване на Spinner към самия Spinner след избор на потребител - игро, андроид-центрофуга

Задайте насочване на Spinner към самия Spinner след избор на потребител - Android, Android-spinner

Когато включа TalkBack, след като се направи селекцияв ми Spinner фокусът незабавно се връща в горната част на екрана (лентата с инструменти). Бих искал фокусът да бъде върху въртящия момент непосредствено след избора на потребителя.

Опитах да настроя въртящото устройство, за да може да се фокусира:

spinner.setFocusable(true);
spinner.setFocusableInTouchMode(true);

Проверих следните въпроси и отговори на StackOverflow, които не засягат пряко въпроса, който имам:

Забелязвам, че въртящият момент е за краткое деактивиран, тъй като е зададен изборът. Предполагам, че затова фокусът се делегира на различно мнение. Как мога да заобиколя това деактивиране или да работя около него?

Всяка помощ ще бъде оценена.

Отговори:

1 за отговор № 1

Бях в състояние да отстрани това, като извърши следното (надявам се, че това помага на някой друг със същия проблем):

    private boolean isUserSelection; // to detect user selection

spinner.setChangeListener(this);
spinner.setFocusable(true);
spinner.setFocusableInTouchMode(true);
if (((AccessibilityManager)getActivity().getSystemService(Context.ACCESSIBILITY_SERVICE)).isEnabled())
{
spinner.setOnFocusChangeListener(new View.OnFocusChangeListener()
{
@Override
public void onFocusChange(View v, boolean hasFocus)
{
if (hasFocus && !isUserSelection)
v.performClick(); //bypasses the caret inside the spinner so user doesn"t have to tap twice to open the drop down
else if (!hasFocus && isUserSelection)
v.requestFocus();
}
});
}

В itemSelectedListener за въртящия се ключ използвайте този код:

if (isUserSelection && (AccessibilityManager)getActivity().getSystemService(Context.ACCESSIBILITY_SERVICE)).isEnabled()))
durationSpinner.requestFocusFromTouch();

0 за отговор № 2

Къде се фокусира? Опитайте да поискате фокус от там като такъв.

newlyFocusedView.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(hasFocus){
newlyFocusedView.clearFocus();
spinner.requestFocus();
spinner.performClick();
}
}
});

Също така опитайте spinner.setFocusable(true);