设置动作栏项目的文本颜色? [英] Setting Action Bar Item Text Color?

查看:110
本文介绍了设置动作栏项目的文本颜色?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图用一个自定义的风格来设置我的动作栏项目文本颜色,但没有任何效果。

我已经试过设置:

 <项目名称=机器人:actionMenuTextColor> @风格/ AppTheme.ActionBar.Text< /项目>
 

在两个<样式名称=动作条在那里没有任何影响,而<样式名称=AppTheme。如果我做了后者,我的应用程序崩溃与

  07-21 13:12:58.519:E / AndroidRuntime(24690):致命异常:主要
07-21 13:12:58.519:E / AndroidRuntime(24690):android.view.InflateException:二进制XML文件中的行#17:错误充气类com.android.internal.view.menu.ActionMenuItemView
07-21 13:12:58.519:E / AndroidRuntime(24690):在android.view.LayoutInflater.createView(LayoutInflater.java:619)
07-21 13:12:58.519:E / AndroidRuntime(24690):在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:693)
07-21 13:12:58.519:E / AndroidRuntime(24690):在android.view.LayoutInflater.inflate(LayoutInflater.java:467)
07-21 13:12:58.519:E / AndroidRuntime(24690):在android.view.LayoutInflater.inflate(LayoutInflater.java:397)
07-21 13:12:58.519:E / AndroidRuntime(24690):在com.android.internal.view.menu.BaseMenu presenter.createItemView(BaseMenu presenter.java:157)
07-21 13:12:58.519:E / AndroidRuntime(24690):在com.android.internal.view.menu.BaseMenu presenter.getItemView(BaseMenu presenter.java:176)
07-21 13:12:58.519:E / AndroidRuntime(24690):在com.android.internal.view.menu.ActionMenu presenter.getItemView(ActionMenu presenter.java:306)
07-21 13:12:58.519:E / AndroidRuntime(24690):在com.android.internal.view.menu.ActionMenu presenter.flagActionItems(ActionMenu presenter.java:593)
07-21 13:12:58.519:E / AndroidRuntime(24690):在com.android.internal.view.menu.MenuBuilder.flagActionItems(MenuBuilder.java:1048)
07-21 13:12:58.519:E / AndroidRuntime(24690):在com.android.internal.view.menu.BaseMenu presenter.updateMenuView(BaseMenu presenter.java:91)
07-21 13:12:58.519:E / AndroidRuntime(24690):在com.android.internal.view.menu.ActionMenu presenter.updateMenuView(ActionMenu presenter.java:334)
07-21 13:12:58.519:E / AndroidRuntime(24690):在com.android.internal.view.menu.MenuBuilder.dispatch presenterUpdate(MenuBuilder.java:244)
07-21 13:12:58.519:E / AndroidRuntime(24690):在com.android.internal.view.menu.MenuBuilder.onItemsChanged(MenuBuilder.java:946)
07-21 13:12:58.519:E / AndroidRuntime(24690):在com.android.internal.view.menu.MenuBuilder.startDispatchingItemsChanged(MenuBuilder.java:969)
07-21 13:12:58.519:E / AndroidRuntime(24690):在com.android.internal.policy.impl.PhoneWindow preparePanel(PhoneWindow.java:507)
07-21 13:12:58.519:E / AndroidRuntime(24690):在com.android.internal.policy.impl.PhoneWindow.doInvalidatePanelMenu(PhoneWindow.java:851)
07-21 13:12:58.519:E / AndroidRuntime(24690):在com.android.internal.policy.impl.PhoneWindow $ 1.运行(PhoneWindow.java:258)
07-21 13:12:58.519:E / AndroidRuntime(24690):在android.view.Choreographer $ CallbackRecord.run(Choreographer.java:749)
07-21 13:12:58.519:E / AndroidRuntime(24690):在android.view.Choreographer.doCallbacks(Choreographer.java:562)
07-21 13:12:58.519:E / AndroidRuntime(24690):在android.view.Choreographer.doFrame(Choreographer.java:531)
07-21 13:12:58.519:E / AndroidRuntime(24690):在android.view.Choreographer $ FrameDisplayEventReceiver.run(Choreographer.java:735)
07-21 13:12:58.519:E / AndroidRuntime(24690):在android.os.Handler.handleCallback(Handler.java:725)
07-21 13:12:58.519:E / AndroidRuntime(24690):在android.os.Handler.dispatchMessage(Handler.java:92)
07-21 13:12:58.519:E / AndroidRuntime(24690):在android.os.Looper.loop(Looper.java:137)
07-21 13:12:58.519:E / AndroidRuntime(24690):在android.app.ActivityThread.main(ActivityThread.java:5328)
07-21 13:12:58.519:E / AndroidRuntime(24690):在java.lang.reflect.Method.invokeNative(本机方法)
07-21 13:12:58.519:E / AndroidRuntime(24690):在java.lang.reflect.Method.invoke(Method.java:511)
07-21 13:12:58.519:E / AndroidRuntime(24690):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1102)
07-21 13:12:58.519:E / AndroidRuntime(24690):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
07-21 13:12:58.519:E / AndroidRuntime(24690):在dalvik.system.NativeStart.main(本机方法)
07-21 13:12:58.519:E / AndroidRuntime(24690):由:java.lang.reflect.InvocationTargetException
07-21 13:12:58.519:E / AndroidRuntime(24690):在java.lang.reflect.Constructor.constructNative(本机方法)
07-21 13:12:58.519:E / AndroidRuntime(24690):在java.lang.reflect.Constructor.newInstance(Constructor.java:417)
07-21 13:12:58.519:E / AndroidRuntime(24690):在android.view.LayoutInflater.createView(LayoutInflater.java:593)
07-21 13:12:58.519:E / AndroidRuntime(24690):29 ...更多
07-21 13:12:58.519:E / AndroidRuntime(24690):android.content.res.Resources $ NotFoundException:通过引起资源不是ColorStateList(颜色或路径):的TypedValue {吨=为0x1 /天= 0x7f0c008f一个= 3 R = 0x7f0c008f}
07-21 13:12:58.519:E / AndroidRuntime(24690):在android.content.res.Resources.loadColorStateList(Resources.java:2963)
07-21 13:12:58.519:E / AndroidRuntime(24690):在android.content.res.TypedArray.getColorStateList(TypedArray.java:343)
。07-21 13:12:58.519:E / AndroidRuntime(24690):在android.widget.TextView< INIT>(TextView.java:851)
。07-21 13:12:58.519:E / AndroidRuntime(24690):在com.android.internal.view.menu.ActionMenuItemView< INIT>(ActionMenuItemView.java:116)
。07-21 13:12:58.519:E / AndroidRuntime(24690):在com.android.internal.view.menu.ActionMenuItemView< INIT>(ActionMenuItemView.java:112)
 

我也试着使用安卓itemTextAppearance 也没有任何影响。

这是我的 styles.xml

 <资源的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android>

<! - 基本应用的主题,依赖于API级别。这个主题被替换
    通过AppBaseTheme从RES /值-VXX /上较新的设备styles.xml。
 - >
<样式名称=AppBaseTheme父=@风格/ Theme.AppCompat.Light.DarkActionBar>
   <! - 在新的API级别提供主题自定义可以进去
        RES /值-VXX / styles.xml,而自定义相关
        向后兼容性可以去这里。 - >
< /风格>

<! - 应用主题。 - >

<样式名称=AppTheme父=AppBaseTheme>

    <项目名称=机器人:actionBarStyle> @风格/动作条< /项目>
    <项目名称=机器人:actionBarTabTextStyle> @风格/ ActionBarTabText< /项目>

    <项目名称=机器人:itemTextAppearance> @风格/ TextAppearance< /项目>

    <项目名称=actionBarStyle> @风格/动作条< /项目>
    <项目名称=actionBarTabTextStyle> @风格/ ActionBarTabText< /项目>
< /风格>

<  - !行动吧 - >

<样式名称=动作条父=@风格/ Widget.AppCompat.Light.ActionBar>

    <项目名称=机器人:titleTextStyle> @风格/ AppTheme.ActionBar.TitleTextStyle< /项目>
    <项目名称=机器人:actionMenuTextColor> @风格/ AppTheme.ActionBar.Text< /项目>
    <项目名称=机器人:背景> @彩色/黑色< /项目>

    <项目名称=titleTextStyle> @风格/ AppTheme.ActionBar.TitleTextStyle< /项目>
    <项目名称=actionMenuTextColor> @风格/ AppTheme.ActionBar.Text< /项目>

< /风格>

<样式名称=AppTheme.ActionBar.TitleTextStyle父=@安卓风格/ TextAppearance>
    <项目名称=机器人:文字颜色> @色/白< /项目>
< /风格>


<样式名称=AppTheme.ActionBar.Text父=@安卓风格/ TextAppearance>
    <项目名称=机器人:文字颜色> @色/白< /项目>
< /风格>


<! - 操作栏标签 - >
<样式名称=AppTheme.Tabtheme父=@风格/ Theme.AppCompat.Light.DarkActionBar>
    <项目名称=机器人:actionBarTabTextStyle> @风格/ ActionBarTabText< /项目>
    <项目名称=actionBarTabTextStyle> @风格/ ActionBarTabText< /项目>
< /风格>

<样式名称=ActionBarTabText父=@风格/ Widget.AppCompat.Base.ActionBar.TabText>
    <项目名称=机器人:文字颜色> @色/白< /项目>
< /风格>

<! - 文本颜色操作栏项目 - >

<样式名称=TextAppearance>
    <项目名称=机器人:文字颜色> @android:彩色/白< /项目>
< /风格>

< /资源>
 

解决方案

您可以轻松地设置为Android操作栏自定义视图做。请遵循以下

首先设置自定义视图动作条这样的..

 动作条= getSupportActionBar();
actionBar.setCustomView(R.layout.action_provider);
 

现在摆在布局action_provider文本视图。

现在让你的TextView的id像这样

  pack_tv =(TextView中)actionBar.getCustomView()findViewById(R.id.action_bar_tv)。
 

现在你可以轻松地做任何你想要。在你的情况设置的文本视图颜色..这样

  pack_tv.setTextColor(your_text_color);
 

您可以做任何事情..请检查以下code ..

 动作条= getSupportActionBar();
        actionBar.setCustomView(R.layout.action_provider);
        iv_d =(ImageView的)actionBar.getCustomView()findViewById(R.id.action_menu)。
        。pack_tv =(TextView中)actionBar.getCustomView()findViewById(R.id.action_bar_tv);
        。spinner_value =(TextView中)actionBar.getCustomView()findViewById(R.id.action_city);
        。city_spinner =(的LinearLayout)actionBar.getCustomView()findViewById(R.id.city_spinner_layout);
        。pack_spinner =(的LinearLayout)actionBar.getCustomView()findViewById(R.id.pack_spinner_layout);
        dashiv1 =(ImageView的)actionBar.getCustomView()findViewById(R.id.dash_iv1)。
        dashiv2 =(ImageView的)actionBar.getCustomView()findViewById(R.id.dash_iv2)。

        dashiv1.setVisibility(View.GONE);
        dashiv2.setVisibility(View.GONE);

        iv_d.setOnClickListener(新OnClickListener(){

            @覆盖
            公共无效的onClick(视图v){

            }
        });
 

这就是它...你是好去。

I'm trying to set my Action bar Items' text colors by using a custom style, but it has no effect.

I've tried setting:

<item name="android:actionMenuTextColor">@style/AppTheme.ActionBar.Text</item>

in both <style name="ActionBar" where it has no effect, and <style name="AppTheme". If I do the latter, my app crashes with:

07-21 13:12:58.519: E/AndroidRuntime(24690): FATAL EXCEPTION: main
07-21 13:12:58.519: E/AndroidRuntime(24690): android.view.InflateException: Binary XML file line #17: Error inflating class com.android.internal.view.menu.ActionMenuItemView
07-21 13:12:58.519: E/AndroidRuntime(24690):    at android.view.LayoutInflater.createView(LayoutInflater.java:619)
07-21 13:12:58.519: E/AndroidRuntime(24690):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:693)
07-21 13:12:58.519: E/AndroidRuntime(24690):    at android.view.LayoutInflater.inflate(LayoutInflater.java:467)
07-21 13:12:58.519: E/AndroidRuntime(24690):    at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
07-21 13:12:58.519: E/AndroidRuntime(24690):    at com.android.internal.view.menu.BaseMenuPresenter.createItemView(BaseMenuPresenter.java:157)
07-21 13:12:58.519: E/AndroidRuntime(24690):    at com.android.internal.view.menu.BaseMenuPresenter.getItemView(BaseMenuPresenter.java:176)
07-21 13:12:58.519: E/AndroidRuntime(24690):    at com.android.internal.view.menu.ActionMenuPresenter.getItemView(ActionMenuPresenter.java:306)
07-21 13:12:58.519: E/AndroidRuntime(24690):    at com.android.internal.view.menu.ActionMenuPresenter.flagActionItems(ActionMenuPresenter.java:593)
07-21 13:12:58.519: E/AndroidRuntime(24690):    at com.android.internal.view.menu.MenuBuilder.flagActionItems(MenuBuilder.java:1048)
07-21 13:12:58.519: E/AndroidRuntime(24690):    at com.android.internal.view.menu.BaseMenuPresenter.updateMenuView(BaseMenuPresenter.java:91)
07-21 13:12:58.519: E/AndroidRuntime(24690):    at com.android.internal.view.menu.ActionMenuPresenter.updateMenuView(ActionMenuPresenter.java:334)
07-21 13:12:58.519: E/AndroidRuntime(24690):    at com.android.internal.view.menu.MenuBuilder.dispatchPresenterUpdate(MenuBuilder.java:244)
07-21 13:12:58.519: E/AndroidRuntime(24690):    at com.android.internal.view.menu.MenuBuilder.onItemsChanged(MenuBuilder.java:946)
07-21 13:12:58.519: E/AndroidRuntime(24690):    at com.android.internal.view.menu.MenuBuilder.startDispatchingItemsChanged(MenuBuilder.java:969)
07-21 13:12:58.519: E/AndroidRuntime(24690):    at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:507)
07-21 13:12:58.519: E/AndroidRuntime(24690):    at     com.android.internal.policy.impl.PhoneWindow.doInvalidatePanelMenu(PhoneWindow.java:851)
07-21 13:12:58.519: E/AndroidRuntime(24690):    at com.android.internal.policy.impl.PhoneWindow$1.run(PhoneWindow.java:258)
07-21 13:12:58.519: E/AndroidRuntime(24690):    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
07-21 13:12:58.519: E/AndroidRuntime(24690):    at android.view.Choreographer.doCallbacks(Choreographer.java:562)
07-21 13:12:58.519: E/AndroidRuntime(24690):    at android.view.Choreographer.doFrame(Choreographer.java:531)
07-21 13:12:58.519: E/AndroidRuntime(24690):    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
07-21 13:12:58.519: E/AndroidRuntime(24690):    at android.os.Handler.handleCallback(Handler.java:725)
07-21 13:12:58.519: E/AndroidRuntime(24690):    at android.os.Handler.dispatchMessage(Handler.java:92)
07-21 13:12:58.519: E/AndroidRuntime(24690):    at android.os.Looper.loop(Looper.java:137)
07-21 13:12:58.519: E/AndroidRuntime(24690):    at android.app.ActivityThread.main(ActivityThread.java:5328)
07-21 13:12:58.519: E/AndroidRuntime(24690):    at java.lang.reflect.Method.invokeNative(Native Method)
07-21 13:12:58.519: E/AndroidRuntime(24690):    at java.lang.reflect.Method.invoke(Method.java:511)
07-21 13:12:58.519: E/AndroidRuntime(24690):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
07-21 13:12:58.519: E/AndroidRuntime(24690):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
07-21 13:12:58.519: E/AndroidRuntime(24690):    at dalvik.system.NativeStart.main(Native Method)
07-21 13:12:58.519: E/AndroidRuntime(24690): Caused by: java.lang.reflect.InvocationTargetException
07-21 13:12:58.519: E/AndroidRuntime(24690):    at java.lang.reflect.Constructor.constructNative(Native Method)
07-21 13:12:58.519: E/AndroidRuntime(24690):    at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
07-21 13:12:58.519: E/AndroidRuntime(24690):    at android.view.LayoutInflater.createView(LayoutInflater.java:593)
07-21 13:12:58.519: E/AndroidRuntime(24690):    ... 29 more
07-21 13:12:58.519: E/AndroidRuntime(24690): Caused by: android.content.res.Resources$NotFoundException: Resource is not a ColorStateList (color or path): TypedValue{t=0x1/d=0x7f0c008f a=3 r=0x7f0c008f}
07-21 13:12:58.519: E/AndroidRuntime(24690):    at android.content.res.Resources.loadColorStateList(Resources.java:2963)
07-21 13:12:58.519: E/AndroidRuntime(24690):    at android.content.res.TypedArray.getColorStateList(TypedArray.java:343)
07-21 13:12:58.519: E/AndroidRuntime(24690):    at android.widget.TextView.<init>(TextView.java:851)
07-21 13:12:58.519: E/AndroidRuntime(24690):    at com.android.internal.view.menu.ActionMenuItemView.<init>(ActionMenuItemView.java:116)
07-21 13:12:58.519: E/AndroidRuntime(24690):    at com.android.internal.view.menu.ActionMenuItemView.<init>(ActionMenuItemView.java:112)

I've also tried using android:itemTextAppearance which also has no effect.

This is my styles.xml:

<resources xmlns:android="http://schemas.android.com/apk/res/android">

<!-- Base application theme, dependent on API level. This theme is replaced
    by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
-->
<style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
   <!-- Theme customizations available in newer API levels can go in
        res/values-vXX/styles.xml, while customizations related to
        backward-compatibility can go here. -->
</style>

<!-- Application theme. -->

<style name="AppTheme" parent="AppBaseTheme">

    <item name="android:actionBarStyle">@style/ActionBar</item>
    <item name="android:actionBarTabTextStyle">@style/ActionBarTabText</item>

    <item name="android:itemTextAppearance">@style/TextAppearance</item>

    <item name="actionBarStyle">@style/ActionBar</item>
    <item name="actionBarTabTextStyle">@style/ActionBarTabText</item>
</style>

<!-- Action Bar -->

<style name="ActionBar" parent="@style/Widget.AppCompat.Light.ActionBar">

    <item name="android:titleTextStyle">@style/AppTheme.ActionBar.TitleTextStyle</item>
    <item name="android:actionMenuTextColor">@style/AppTheme.ActionBar.Text</item>
    <item name="android:background">@color/Black</item>

    <item name="titleTextStyle">@style/AppTheme.ActionBar.TitleTextStyle</item>
    <item name="actionMenuTextColor">@style/AppTheme.ActionBar.Text</item>

</style>

<style name="AppTheme.ActionBar.TitleTextStyle" parent="@android:style/TextAppearance">
    <item name="android:textColor">@color/White</item>
</style>


<style name="AppTheme.ActionBar.Text" parent="@android:style/TextAppearance">
    <item name="android:textColor">@color/White</item>
</style>


<!-- Action Bar Tabs -->
<style name="AppTheme.Tabtheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
    <item name="android:actionBarTabTextStyle">@style/ActionBarTabText</item>
    <item name="actionBarTabTextStyle">@style/ActionBarTabText</item>
</style>

<style name="ActionBarTabText" parent="@style/Widget.AppCompat.Base.ActionBar.TabText">
    <item name="android:textColor">@color/White</item>
</style>

<!-- Text color for Action bar items -->

<style name="TextAppearance">
    <item name="android:textColor">@android:color/white</item>
</style>

</resources>

解决方案

You can easily do by setting custom view for android action bar .. Please follow below

Firstly set custom view for ActionBar like this ..

actionBar = getSupportActionBar();
actionBar.setCustomView(R.layout.action_provider);

Now put your text view in layout "action_provider".

Now get your textview id like this

pack_tv = (TextView) actionBar.getCustomView().findViewById(R.id.action_bar_tv);

Now you can easily do what ever you want .. In your case set text view color .. like this

pack_tv.setTextColor("your_text_color");

You can do any thing .. please check below code ..

actionBar = getSupportActionBar();
        actionBar.setCustomView(R.layout.action_provider);
        iv_d = (ImageView) actionBar.getCustomView().findViewById(R.id.action_menu);
        pack_tv = (TextView) actionBar.getCustomView().findViewById(R.id.action_bar_tv);
        spinner_value = (TextView) actionBar.getCustomView().findViewById(R.id.action_city);
        city_spinner = (LinearLayout) actionBar.getCustomView().findViewById(R.id.city_spinner_layout);
        pack_spinner = (LinearLayout) actionBar.getCustomView().findViewById(R.id.pack_spinner_layout);
        dashiv1 = (ImageView) actionBar.getCustomView().findViewById(R.id.dash_iv1);
        dashiv2 = (ImageView) actionBar.getCustomView().findViewById(R.id.dash_iv2);

        dashiv1.setVisibility(View.GONE);
        dashiv2.setVisibility(View.GONE);

        iv_d.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

            }
        });

That's it ... you are good to go.

这篇关于设置动作栏项目的文本颜色?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆