动作栏样式问题

时间:2013-04-08 10:47:02

标签: android styles android-actionbar actionbarsherlock

我需要在操作栏中添加下拉列表。我尝试了很多不同的方法,但是每个人都展示了它的具体缺陷。以下是两次尝试的结果。

enter image description here

鞋面是一个微调器,通过actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);添加到操作栏中。除了整个应用程序主题@style/Theme.Sherlock之外,不使用任何样式。 (应用程序必须在新设备和旧设备上均匀显示,因此使用ActionBarSherlock。)如您所见,此方法在深色/黑色背景上生成黑色文本颜色。选定的元素在操作栏中以黑色字体在黑色背景上“显示”。 (默认情况下,它是android.R.layout.simple_spinner_itemandroid.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上。请注意,我不想在自定义样式中指定硬编码颜色。我想从现有的样式(系统或Sherlock的holo主题)继承它们。并且应该在API级别10上知道父级样式。无论如何,这些是菜单可接受的样式。我只需要把它移到微调器上。

菜单方法可能是一种解决方法,但它缺少右下角的小三角形,表示将向用户显示一个下拉菜单。我知道它来自微调器状态列表drawable,我可以将相同的背景应用于菜单项。但是,它会影响所有菜单项,而我只需要在带有子菜单的项目上显示三角形。

我很欣赏任何方向的解决方案。

1 个答案:

答案 0 :(得分:2)

尝试样本中的代码:

    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