如何在ActionBarSherlock上更改IcsSpinner的文本颜色?

时间:2012-08-22 14:47:24

标签: android android-actionbar actionbarsherlock

我的行动栏目前是这样的:

enter image description here

我希望它是这样的:

enter image description here

忽略徽标旁边的黑线。主要是我想要的是change the color of the text in the IcsSpinner to white

我的活动代码是:

    ArrayAdapter<String> listAdapter = new ArrayAdapter<String>(this,
            R.layout.sherlock_spinner_item, cities);
    listAdapter
            .setDropDownViewResource(R.layout.sherlock_spinner_dropdown_item);
    setContentView(mViewPager);
    final ActionBar bar = getSupportActionBar();
    bar.setCustomView(R.layout.custom_actionbar);
    bar.setIcon(R.drawable.logo);
    bar.setDisplayShowCustomEnabled(true);
    IcsSpinner citySpinner = (IcsSpinner) (bar.getCustomView())
            .findViewById(R.id.city_spinner);
    citySpinner.setAdapter(listAdapter);

我的custom_actionbar.xml是:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:gravity="right|center_vertical"
    android:orientation="horizontal" >

    <com.actionbarsherlock.internal.widget.IcsSpinner
        android:id="@+id/city_spinner"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"/>

</RelativeLayout>

我甚至希望微调器为just left to the refresh icon。就像第二张图片一样。

谢谢

2 个答案:

答案 0 :(得分:15)

您需要使用getSupportActionBar().getThemedContext()作为适配器的Context实例来扩充布局。这将使用适合于在操作栏内膨胀小部件的任何主题,而不是为活动内容设置的主题。

答案 1 :(得分:1)

只是为了赞美接受的答案:在尝试使用构造函数创建新的ArrayAdapter时遇到一些奇怪的NullPointerException后,这对我有用

    ActionBar actionBar = getSupportActionBar();
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
    ArrayAdapter<CharSequence> adapter = 
        ArrayAdapter.createFromResource(actionBar.getThemedContext(),
        R.array.action_list, android.R.layout.simple_spinner_dropdown_item);
    actionBar.setListNavigationCallbacks(adapter, this);
    actionBar.setDisplayShowTitleEnabled(false);