对V7 ActionBar项目的选框效果

时间:2014-05-22 13:34:57

标签: android android-actionbar

我使用v7支持操作栏并在那里获得了3个项目:一个是文本,另外两个是图标。 根据选择的选项,文本会发生变化,这没有问题,但如果文本很长,则不能再看到这两个图标项。 所以我想为文本项添加一个选框效果,以确保带有图标的两个项目都是可见的。我该如何实现呢?

以下是操作栏的更新代码:

private void updateActionBar() {

    runOnUiThread(new Runnable() {

        @Override
        public void run() {

            MenuItem addFavoriteItem=menu.getItem(FAVORITE_MENU_ITEM); //R.id.action_fav dosn't work here :/
            MenuItem nameItem=menu.getItem(ALBUMNAME_MENU_ITEM);

            int id=R.drawable.ic_add_favorite;
            if(gridview.getAdapter() instanceof CategoryAdapter)
            {
            nameItem.setTitle("");
            nameItem.setTitleCondensed("");
                if(gridview.getAdapter().getClass() == CategoryAdapter.FavoriteAdapter.class)
                {
                id=R.drawable.ic_favorite;
                }
            } else if(gridview.getAdapter() instanceof AlbumAdapter)
            {
                Album a=((AlbumAdapter)gridview.getAdapter()).getAlbum();
                if(isFavorite(a))id=R.drawable.ic_favorite;
                nameItem.setTitle(a.getName());
                nameItem.setTitleCondensed(a.getShortName());



            }
            addFavoriteItem.setIcon(id);

        }
    });
}

和定义项目的xml:

      <item
    android:id="@+id/album_name"

    android:title="@string/album_name"
    yourapp:showAsAction="ifRoom"
    android:ellipsize="marquee"
    android:marqueeRepeatLimit="marquee_forever"/>

  <item
    android:id="@+id/action_save_all"
    android:icon="@drawable/ic_action_content_save"
    android:title="@string/action_save_all"
    yourapp:showAsAction="always"/>
  <item
    android:id="@+id/action_fav"
    android:icon="@drawable/ic_add_favorite"
    android:title="@string/action_fav"
    yourapp:showAsAction="always"/>

1 个答案:

答案 0 :(得分:2)

您需要为item&#39; album_name&#39;添加一个布局。 :

<item
android:id="@+id/album_name"

android:title="@string/album_name"
yourapp:showAsAction="always"
yourapp:actionLayout="@layout/action_text"/>

然后布局&#39; action_text&#39;可能是:

<TextView android:id="@+id/text_name" 
    android:layout_width="text_width" 
    android:layout_height="wrap_content"     
    android:singleLine="true" 
    android:ellipsize="marquee"
    android:marqueeRepeatLimit ="marquee_forever"
    android:scrollHorizontally="true"       
    ... ...
            />

希望得到这个帮助。