2013-04-05 88 views
1

我正在尝试设置动作条列表导航的样式,使其在关闭状态下具有白色文本。但是,当我这样做时,它已将全部变为白色,而白色下拉菜单不起作用。动作栏下拉菜单样式

有没有一种方法来分别设置每个样式?该文档是不存在的:(

screenshot

回答

0

也许,你可以通过编程方式做到这一点(虽然我从来没有尝试过):

public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.menuId, menu); 

    menu.findItem(R.id.itemId).getActionView().setBackground(...) 
    } 
+0

我不需要更改背景。我想在每种状态下设置文本颜色的样式。 – seanmonstar 2013-04-05 22:29:19

+0

将一个自定义actionView(setActionView)设置为一个TextView(或内部具有TextView的布局)。这是你如何控制文字的颜色。 – cyanide 2013-04-09 11:12:21

1

添加自定义布局为您Adapter在此我有。创建一个布局里面,我有添加一个TextViewtext colorbackground color

,并设置atapter,如:。

ArrayAdapter<String> adapter = new ArrayAdapter<String>(
       getBaseContext(), R.layout.my_spinner_style, R.id.textView1, 
       COUNTRIES); 

这里

R.layout.my_spinner_style是我的自定义布局。

R.id.textView1是来自my_spinner_style.xml的textview ID。

您还可以在TextView中应用awn样式。检查thisthis是理论上的。

检查验证码:

enter image description here

onCreate

/** Create an array adapter to populate dropdownlist */ 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(
       getBaseContext(), R.layout.my_spinner_style, R.id.textView1, 
       COUNTRIES); 

     /** Enabling dropdown list navigation for the action bar */ 
     getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); 

     /** Defining Navigation listener */ 
     ActionBar.OnNavigationListener navigationListener = new OnNavigationListener() { 

      @Override 
      public boolean onNavigationItemSelected(int itemPosition, 
        long itemId) { 
       Toast.makeText(getBaseContext(), 
         "You selected : " + COUNTRIES[itemPosition], 
         Toast.LENGTH_SHORT).show(); 
       return false; 
      } 
     }; 

     /** 
     * Setting dropdown items and item navigation listener for the actionbar 
     */ 
     getActionBar().setListNavigationCallbacks(adapter, navigationListener); 

my_spinner_style.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="#FFFF00" > 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Large Text" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 

</LinearLayout> 
+0

与我对另一个答案的评论类似,我并不试图改变所有人的背景,我想根据状态更改文本颜色,如图片所示... – seanmonstar 2013-04-05 22:36:32

0

如果使用Adapter(必须定义实现SpinnerAdapter)您有两个可以覆盖的回调。 getView将被称为“选定”项目。将调用getDropDownView下拉项目。您可以在那里设置不同的文字颜色。