【问题标题】:How to style specific Items on action bar如何在操作栏上设置特定项目的样式
【发布时间】:2013-08-13 21:24:20
【问题描述】:

我有一个包含 3 个项目的操作栏,并希望为它们设置不同的样式(见下图)。问题是当我设置样式如下:

<style name="MyTheme2" parent="@android:style/Theme.Holo.Light">
    <item name="android:actionBarStyle">@style/MyTheme.ActionBarStyle</item>
    <item name="android:actionMenuTextColor">#DAF9FE</item>
    <item name="android:actionMenuTextAppearance">@style/MyActionBar.MenuTextStyle</item>
</style>

<style name="MyTheme.ActionBarStyle" parent="@android:style/Widget.Holo.Light.ActionBar">
    <item name="android:background">@drawable/ab_solid</item>
    <item name="android:titleTextStyle">@style/MyTheme.ActionBar.TitleTextStyle</item>
</style>

<style name="MyTheme.ActionBar.TitleTextStyle" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title">
    <item name="android:textColor">#DAF9FE</item>
    <item name="android:textSize">22sp</item>
</style>

<style name="MyActionBar.MenuTextStyle" parent="android:style/TextAppearance.Holo.Widget.ActionBar.Title">
    <item name="android:textSize">18sp</item>
</style>

它将所有 3 个项目设置为该主题。本质上,我想为我的操作栏上的一个项目添加背景图像,而不是将其应用于所有 3 个项目。

item name="android:selectableItemBackground">​​@drawable/btn_ab_quiz_normal

有没有办法在不创建自定义视图的情况下做到这一点?

我还尝试使用带有文本的测验按钮图像作为图像的一部分并设置 Text="",但该图标显示得很小,因为操作栏图标是一个特定的尺寸。

  • 下图是我希望操作栏的样子。

【问题讨论】:

    标签: android android-layout android-actionbar


    【解决方案1】:

    你可以用这个改变颜色:

    ActionBar bar = getActionBar();
    bar.setBackgroundDrawable(new ColorDrawable("COLOR"));
    

    menu.xml 中,您可以将图标添加到您的ActionBar。像这样:

    <menu xmlns:android="http://schemas.android.com/apk/res/android" >
        <item android:id="@+id/action_search"
              android:icon="@drawable/ic_action_search"
              android:title="@string/action_search"/>
        <item android:id="@+id/action_compose"
              android:icon="@drawable/ic_action_compose"
              android:title="@string/action_compose" />
    </menu>
    

    MainActivity 连接main.xml。使用此代码:

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu items for use in the action bar
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu, menu);
        return super.onCreateOptionsMenu(menu);
    }
    

    如果你想要那个小按钮,我建议你打开 Photoshop 并创建新项目。

    希望对你有所帮助... ;)

    【讨论】:

    • 谢谢,但是 setBackgroundDrawable 设置了操作栏的背景,我只想设置一个操作栏项目的背景。我已经按照你所说的做了所有的事情来添加项目和增加菜单。
    • 那么您应该使用 Photoshop。在 Photoshop 中,您可以在 20 秒内更改项目颜色。如果需要,可以查看 ScherlockActionBar。
    • 我也尝试过对图像进行 Photoshop 处理,但它会将其缩小到 72x72,因为这是图标的预期尺寸。我想我必须在操作栏中添加一个 customView。 SherlockActionBar 通常用于支持 android 3.0 及以下版本,因为当时还没有操作栏。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-16
    • 2015-03-17
    • 2021-07-14
    • 1970-01-01
    相关资源
    最近更新 更多