Стиль выпадающего списка Spinner при использовании в качестве пользовательского представления в ActionBarSherlock на Android 2.2

Я использую ActionBarSherlock. В моем приложении мне нужно 2 счетчика на панели действий, поэтому я использую навигацию по списку + добавляю второй счетчик с настраиваемым представлением.

Я добавляю счетчик в пользовательский вид с помощью этого кода:

ActionBar bar = getSupportActionBar();

// FALLBACK: Use native actionbar dropdown style for 11+ API. Or use ActionBarSherlock style.
int dropDownStyle = (VERSION.SDK_INT < 11) ? R.attr.actionDropDownStyle : android.R.attr.actionDropDownStyle;           

MyAdapter someAdapter = new MyAdapter(this, list);          

Spinner mySpinner = new Spinner(this, null, dropDownStyle);                    
mySpinner.setAdapter(someAdapter);        
mySpinner.setOnItemSelectedListener(this);

bar.setCustomView(mySpinner);
bar.setDisplayShowCustomEnabled(true);

На Android 4.0.3 все работает отлично.

Поведение Android 2.2:

Спиннер навигации по списку выглядит как на Android 4.0.4 (в виде выпадающего списка). Но Spinner в пользовательском представлении отображает диалоговое окно вместо раскрывающегося списка при нажатии на вид счетчика.

Поэтому мне нужно отобразить Spinner в пользовательском представлении на Android 2.2 в виде раскрывающегося списка, как на Android 4.0.4.

введите здесь описание изображения


person Paul Annekov    schedule 29.11.2012    source источник


Ответы (1)


ActionBarSherlock использует пользовательский элемент управления счетчиком, IcsSpinner, который обеспечивает функциональность раскрывающегося списка. Хотя это существует в пакете internal, это общедоступный класс, поэтому вы можете переключить свой код на его использование. Это должно дать вам точное отражение раскрывающегося списка, используемого элементом управления навигацией по списку.

Однако имейте в виду, что этот элемент управления НЕ предназначен для использования где-либо, кроме встроенной навигации по списку, и поэтому может отсутствовать функциональность или функции, которые вам нужны.

person Jake Wharton    schedule 29.11.2012
comment
Спасибо за ответ от разработчика ABS :)). Да, я знаю, что могу использовать IcsSpinner. Но это зеркало элемента управления из какой-то версии Android API. И я хочу использовать его только на Android до API 11 и собственном элементе управления Spinner на API 11+. Может еще какие решения? - person Paul Annekov; 30.11.2012
comment
Вы всегда можете использовать папку layout-v11, чтобы использовать оригинальный Spinner. Затем используйте IcsSpinner в обычном макете. - person tasomaniac; 14.08.2013