Проблеми със стила на лентата за действие

Трябва да добавя падащ списък в лента с действия. Опитах много различни начини да направя това, но всеки демонстрира своя специфичен недостатък. Ето резултатите от 2 от опитите.

въведете описание на изображението тук

Горната част е спинер, добавен в лентата с действия посредством actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);. Не се използват стилове, освен за цялата тема на приложението, която е @style/Theme.Sherlock. (Приложението трябва да изглежда еднакво на нови и стари устройства, така че се използва ActionBarSherlock.) Както можете да видите, този метод създава черен цвят на текста на тъмен/черен фон. Избраният елемент се "показва" в лентата с действия с черен шрифт върху черен фон. (По подразбиране бяха android.R.layout.simple_spinner_item и android.R.layout.simple_spinner_dropdown_item оформления, но опитах и ​​персонализирани с препратки към различни налични стилове).

Например:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, test);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
actionBar.setListNavigationCallbacks(adapter, new ActionBar.OnNavigationListener()
...

Второто е меню. Изглежда добре по отношение на цветовете. Бих искал да има същия стил (цветове, размер на шрифта, подравняване) в спинера. Но не мога да получа това, след като си играх с много предложения, намерени в Интернет и особено в SO. Моля, обърнете внимание, че не искам да посочвам твърдо кодирани цветове в персонализирания си стил. Искам да ги наследя от съществуващи стилове (системни или холо теми на Шерлок). И родителските стилове трябва да са известни на API ниво 10. Както и да е, това Е приемливият стил за менюта. Трябва само да го преместя на центрофугата.

Подходът с менюто може да бъде заобиколно решение, но му липсва малкият триъгълник в долния десен ъгъл, което показва, че падащо меню ще бъде представено на потребителя. Знам, че идва от списъка със състояния на центрофуга, който може да бъде изтеглен, и мога да приложа същия фон към елементи от менюто. Но това засяга ВСИЧКИ елементи от менюто, докато трябва само да покажа триъгълника върху елементи с подменю.

Ще се радвам на решение и в двете посоки.


person Stan    schedule 08.04.2013    source източник
comment
confuz.. какво искаш...??   -  person Dhaval Parmar    schedule 08.04.2013
comment
@DhavalSodhaParmar, имам нужда от падащо меню в четими цветове (например светъл цвят на тъмен фон, където светлото и тъмното идват от стандартната тема), с индикатор, че падащото меню е налично.   -  person Stan    schedule 08.04.2013
comment
Публикувайте кода там, където инициирате използвания адаптер в списъка за навигация.   -  person rciovati    schedule 08.04.2013
comment
Тъй като контекстът се предава на конструктора на ArrayAdapter, опитайте Context context = getSupportActionBar().getThemedContext(); вместо this.   -  person rciovati    schedule 08.04.2013
comment
@rciovati, Опитах. Не помогна.   -  person Stan    schedule 08.04.2013
comment
Тази проба работи ли за вас? bit.ly/ZIXyda   -  person rciovati    schedule 08.04.2013
comment
@rciovati, да, след като промених оформлението на спинера на R.layout.sherlock., го накарах да работи. Публикувайте отговора.   -  person Stan    schedule 08.04.2013
comment
FWIW, имам същия проблем, използвайки внедряването на лентата за действие в библиотеката за поддръжка на appcompat (вместо ActionBarSherlock). За съжаление няма R.layout.sherlock_ ресурси, към които да се върнем.   -  person Kristopher Johnson    schedule 19.10.2013


Отговори (1)


Опитайте кода от примерите:

    mLocations = getResources().getStringArray(R.array.locations);

    Context context = getSupportActionBar().getThemedContext();
    ArrayAdapter<CharSequence> list = ArrayAdapter.createFromResource(context, R.array.locations, R.layout.sherlock_spinner_item);
    list.setDropDownViewResource(R.layout.sherlock_spinner_dropdown_item);

    getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
    getSupportActionBar().setListNavigationCallbacks(list, this);

Взето от: http://bit.ly/19mJdLK

person rciovati    schedule 08.04.2013
comment
Благодаря за отговора. Между другото, не виждам пример за използване на спинер като изглед на действие (android:actionLayout), но дори и с тематичен контекст и оформления на Шерлок, спинерът така или иначе не е стилизиран там, тоест той се показва като стандартен спинер. Има ли друг съвет за това? - person Stan; 08.04.2013