当前位置: 首页 > 知识库问答 >
问题:

按颜色更改操作栏

齐甫
2023-03-14

我不知道如何在Android上更改操作栏项目“onPressed”的颜色。我说的不是动作条的背景色,而是蓝色覆盖状态。我怎样才能改变它的颜色或者至少去掉它?例如,带有homeAsUpIndicator的应用程序图标。

我试图更改操作栏样式和菜单项样式,但没有任何效果。

谢谢

编辑此处是我迄今为止的实现:

我的风格xml:

<style name="Theme.AppTheme" parent="@android:style/Theme.Holo">
    <item name="android:actionBarStyle">@style/MyActionBar</item>
    <item name="android:selectableItemBackground">@android:color/transparent</item>
    <item name="android:windowEnterAnimation">@anim/fadein</item>
    <item name="android:windowExitAnimation">@anim/fadeout</item>        
    <item name="android:actionBarItemBackground">@android:color/transparent</item>
</style>

<style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
    <item name="android:background">@drawable/actionbarheader</item>
    <item name="android:backgroundStacked">@drawable/actionbarheader</item>
    <item name="android:backgroundSplit">@drawable/actionbarheader</item>
    <item name="android:titleTextStyle">@style/ActionBarTitle</item>
    <item name="android:actionBarItemBackground">@android:color/transparent</item>
    <item name="android:actionButtonStyle">@style/MyActionButtonStyle</item>
    <item name="android:homeAsUpIndicator">@drawable/actionbarlogo</item>
    <item name="android:icon">@drawable/app_icon</item>>
</style>

<style name="ActionBarTitle" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title">
    <item name="android:textSize">20sp</item>
</style>

<style name="MyActionButtonStyle" parent="@android:style/Widget.Holo.Light.ActionButton">
    <item name="android:background">@android:color/transparent</item>
</style>

然后我有一个动作巴罗哥的可抽绳:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:drawable="@drawable/actionbarlogo_on" android:state_pressed="true"/>
  <item android:drawable="@drawable/actionbarlogo_on" android:state_focused="true"/>
  <item android:drawable="@drawable/actionbarlogo_off"/>
</selector>

操作栏项目的“我的菜单xml”:

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/ContactsMode"
        android:icon="@drawable/actionbarcontacts"
        android:title="@string/contacts"
        android:orderInCategory="100"
        android:showAsAction="always"
        android:background="@android:color/transparent" />
</menu>

最后,项目的可提取性:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:drawable="@drawable/actionbarcontacts_on" android:state_pressed="true"/>
  <item android:drawable="@drawable/actionbarcontacts_on" android:state_focused="true"/>
  <item android:drawable="@drawable/actionbarcontacts_off"/>
</selector>

以下是我如何为ActionBar创建菜单项:

public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.main_menu, menu);
        actionBar.setIcon(R.drawable.actionbarlogo);
        return true;
    }

    public boolean onPrepareOptionsMenu(Menu menu) {        
         MenuItem item= menu.findItem(R.id.ContactsMode);
         if(ContactsButton)
             item.setVisible(true);      
         else
            item.setVisible(false);

         return true;   
    }

共有2个答案

弘思聪
2023-03-14

修好了。有一个父活动正在更改onCreate方法中的主题。。。

我不知道您可以通过以下方式在活动中以编程方式设置主题:

setTheme(R.style.MyTheme);
海雪松
2023-03-14

要设置应用程序图标的背景与home AsUpIndex(这两个图标有一个共同的背景),您必须在主题中设置android: actionBarItembackground项。主题必须包含这样的内容(我假设您使用ActionBarSherlock):

<style name="MyTheme" parent="@style/Theme.Sherlock">
    <!-- for ActionBarSherlock -->
    <item name="actionBarItemBackground">@drawable/my_background</item>
    <!-- for native ActionBar -->
    <item name="android:actionBarItemBackground">@drawable/my_background</item>
</style>

其中,可绘制的可绘制的/my_background.xml将是一个StaleListDrawable,包含以下内容:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:state_pressed="true"
        android:drawable="@drawable/my_background_pressed" />
    <item
        android:drawable="@drawable/my_background_normal" />
</selector>

要完全禁用背景,您可以设置透明背景,或者主题中的值@null也可以工作。

主题项android: actionBarItembackground设置应用程序图标和home AsUpSignator的背景。但是它也设置菜单项的默认背景、溢出图标和标题的背景。这些背景可以被覆盖。

菜单项

要更改菜单项背景,请在主题中设置适当的(android:)actionButtonStyle,如下所示:

<style name="MyTheme" parent="@style/Theme.Sherlock">
    <item name="actionButtonStyle">@style/MyActionButtonStyle</item>
    <item name="android:actionButtonStyle">@style/MyActionButtonStyle</item>
</style>

MyActionButtonStyle将包含如下内容:

<style name="MyActionButtonStyle" parent="@style/Widget.Sherlock.ActionButton">
    <item name="android:background">@drawable/my_background</item>
</style>

溢出图标

最后,要更改溢出图标背景,请在主题中设置适当的android:actionOverflowButtonStyle,如下所示:

<style name="MyTheme" parent="@style/Theme.Sherlock">
    <item name="actionOverflowButtonStyle">@style/MyOverflowButtonStyle</item>
    <item name="android:actionOverflowButtonStyle">@style/MyOverflowButtonStyle</item>
</style>

MyOverflowButtonStyle将包含如下内容:

<style name="MyOverflowButtonStyle" parent="@style/Widget.Sherlock.ActionButton.Overflow">
    <item name="android:background">@drawable/my_background</item>
</style>
 类似资料:
  • 问题内容: 我一直在尝试更改Material的“浮动动作按钮”的颜色,但没有成功。 我尝试添加: 或通过代码: 要么 但以上方法均无效。我也尝试过提出的重复问题中的解决方案,但是没有一个起作用。按钮保持绿色,并且也变成了正方形。 PS知道如何添加波纹效果也很高兴,也无法理解。 问题答案: 如文档中所述,默认情况下,它采用在styles.xml属性colorAccent中设置的颜色。 该视图的背景色

  • 描述 (Description) LESS提供了许多有用的操作功能,以不同的方式改变和操作颜色,并以相同的单位获取参数。 LESS支持一些颜色操作功能,如下表所示 - Sr.No. 指令和说明 1 saturate 它改变了元素中颜色的强度或饱和度。 2 desaturate 它降低了元素中颜色的强度或饱和度。 3 lighten 它增加了元素中颜色的亮度。 4 darken 它改变了元素中颜色的

  • 该项目的最小sdk为9,最大sdk为19。 我已在res/values文件夹中创建了一个xml文件: red_actionbar.xml 至 它确实改变了我应用程序的主题,所以问题出在风格上但我不知道如何解决。

  • 我正在开发一个基于测验的应用程序。将有1个问题和4个选项(单选按钮)。如果用户选择了任何错误的答案,那么我想将单选按钮颜色变为红色。如何做到这一点?

  • 如何动态更改动作条箭头的颜色?我不想使用像这里这样的主题,因为我的动作条的颜色也会动态变化。 有可能吗?