我想在我的应用程序中更改ActionBar的标题文本颜色.我在很多方面都尝试过,但我无法实现.我不想以编程方式执行此操作,因为当应用程序启动时,它会显示具有先前颜色的操作栏,然后更改为新的操作栏.我支持Api Level 8,我的xml是使用Android Action Bar Style Generator生成的.然后我尝试用此更改标题文本颜色.标题文字颜色仍为黑色.
这是我的代码:
<resources>
<style name="Theme.Dbtools_style" parent="@style/Theme.AppCompat.Light">
<item name="actionBarItemBackground">@drawable/selectable_background_dbtools_style</item>
<item name="popupMenuStyle">@style/PopupMenu.Dbtools_style</item>
<item name="dropDownListViewStyle">@style/DropDownListView.Dbtools_style</item>
<item name="actionBarTabStyle">@style/ActionBarTabStyle.Dbtools_style</item>
<item name="actionDropDownStyle">@style/DropDownNav.Dbtools_style</item>
<item name="actionBarStyle">@style/ActionBar.Solid.Dbtools_style</item>
<item name="actionModeBackground">@drawable/cab_background_top_dbtools_style</item>
<item name="actionModeSplitBackground">@drawable/cab_background_bottom_dbtools_style</item>
<item name="actionModeCloseButtonStyle">@style/ActionButton.CloseMode.Dbtools_style</item>
<!-- Remove icon in Action Bar -->
<item name="android:displayOptions">showHome|homeAsUp|showTitle</item>
<item name="displayOptions">showHome|homeAsUp|showTitle</item>
<item name="android:icon">@android:color/transparent</item>
<!-- Support library compatibility -->
<item name="actionBarStyle">@style/ActionBar.Solid.Dbtools_style</item>
</style>
<style name="ActionBar.Solid.Dbtools_style" parent="@style/Widget.AppCompat.Light.ActionBar.Solid">
<item name="background">@drawable/ab_solid_dbtools_style</item>
<item name="backgroundStacked">@drawable/ab_stacked_solid_dbtools_style</item>
<item name="backgroundSplit">@drawable/ab_bottom_solid_dbtools_style</item>
<item name="progressBarStyle">@style/ProgressBar.Dbtools_style</item>
<!-- Title Text Color -->
<item name="android:titleTextStyle">@style/MyActionBarTitleText</item>
<!-- Support library compatibility -->
<item name="titleTextStyle">@style/MyActionBarTitleText</item> …Run Code Online (Sandbox Code Playgroud) 我需要以编程方式更改操作栏标题文本颜色.
我使用以下代码以稍微不同的方式设置颜色,具体取决于SDK版本
int textColor = getResources().getColor(android.R.color.white);
if (Build.VERSION.SDK_INT >= 14) {
// Version 4+
int titleId = getResources().getIdentifier("action_bar_title", "id", "android");
TextView abTitle = (TextView) findViewById(titleId);
if (abTitle != null) {
abTitle.setTextColor(textColor);
}
} else {
// Other versions
TextView abTitle = (TextView) getWindow().findViewById(android.R.id.title);
if (abTitle != null) {
abTitle.setTextColor(textColor);
}
}
Run Code Online (Sandbox Code Playgroud)
它适用于SDK值为14或更高的设备.但是,对于Gingerbread设备,abTitle始终为null,因此颜色不会设置.
anyony有什么建议吗?
如何更改操作栏后退按钮和操作栏菜单图标(附加图像)的颜色.我有以下样式代码(下面),使用它我自定义文本但我无法完全自定义操作栏.
下面是我使用的样式代码:
<style name="MyCustomTheme" parent="Theme.Sherlock.Light">
<item name="actionBarStyle">@style/ActionBar</item>
<item name="android:actionBarStyle">@style/ActionBar</item>
</style>
<style name="ActionBar" parent="Widget.Sherlock.ActionBar">
<item name="background">@drawable/bg_header</item> -----------(1)
<item name="android:background">@drawable/bg_header</item>
<item name="android:titleTextStyle">@style/customTextAppearance.Sherlock.Widget.ActionBar.Title</item> ----(2)
<item name="titleTextStyle">@style/customTextAppearance.Sherlock.Widget.ActionBar.Title</item>
<item name="android:homeAsUpIndicator">@style/customTextAppearance.Sherlock.Widget.ActionBar.Title</item>
</style>
<style name="customTextAppearance.Sherlock.Widget.ActionBar.Title" parent="TextAppearance.Sherlock.Widget.ActionBar.Title">
<item name="android:textSize">18dp</item>
<item name="android:textColor">#ffffff</item>
<item name="android:shadowColor">#ffffff</item>
<item name="android:shadowDy">3</item>
<item name="android:textStyle">bold</item>
</style>
Run Code Online (Sandbox Code Playgroud)
感谢您的帮助,谢谢.

我的主要活动包括一个fragment.我在Activity的onResume()方法上设置了操作栏标题
@Override
protected void onResume() {
super.onResume();
getActionBar().setTitle("My Account");
}
Run Code Online (Sandbox Code Playgroud)
它将动作栏标题显示为"My Account".当我调用片段时,我将片段的onResume()方法的标题设置为
@Override
public void onResume() {
super.onResume();
getActivity().getActionBar().setTitle("Connected Accounts");
}
Run Code Online (Sandbox Code Playgroud)
它显示标题为.'Connected Accounts'但是当我回到活动时它仍然显示标题为'Connected Accounts',而它应显示为'My Account'.请帮助我知道这个奇特的案例中缺少一些东西.谢谢
试图将(appcompat v20)中的应用程序移动到新库appcompat v21
与:appcompat-v7:20工作很好
我这样做了:
ActionBarActivity implements ActionBar.TabListener, ActionBar.OnNavigationListener
Run Code Online (Sandbox Code Playgroud)
有这个:
android.view.InflateException: Binary XML file line #17: Error inflating class android.support.v7.internal.widget.ActionBarOverlayLayout
android nullpointerexception fragment android-appcompat android-actionbar
使用以前版本的AppCompat,很容易获得ActionBar标题TextView并对其进行修改.
有我使用的方法:
private TextView getActionBarTitleView() {
int id = getResources().getIdentifier("action_bar_title", "id", "android");
return (TextView) findViewById(id);
}
Run Code Online (Sandbox Code Playgroud)
然后更改标题的alpha值:
getActionBarTitleView().setAlpha(ratio*255);
Run Code Online (Sandbox Code Playgroud)
现在由于某些原因,使用最新的AppCompat版本的"action_bar_title"不再起作用了.当我尝试使用我的方法时,它返回"null".试图使用其他的id,ActionBar但我找不到好的.
我在Ahmed Nawara的StackOverflow上看到了1个帖子,他目前找到的唯一方法是对子Toolbar视图进行迭代,每当TexView找到a时,将它的文本值与toolbar.getTitle()进行比较,以确保在TexView我们看到的.
如果有人可以帮助我将这个解决方案整合到我的案例中,因为我实际上不知道该怎么做.
android android-appcompat android-actionbar android-support-library
我在动作栏上得到空指针异常.我正在使用.getActionBar()以下是错误..我正在扩展活动
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.peoplecloud.guggu/com.peoplecloud.guggu.activity.LandingActivity_}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2211)
at android.app.ActivityThread.access$600(ActivityThread.java:149)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1300)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:153)
at android.app.ActivityThread.main(ActivityThread.java:5086)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:821)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at com.peoplecloud.guggu.activity.LandingActivity.onCreate(LandingActivity.java:96)
at com.peoplecloud.guggu.activity.LandingActivity_.onCreate(LandingActivity_.java:29)
at android.app.Activity.performCreate(Activity.java:5020)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2211)
at android.app.ActivityThread.access$600(ActivityThread.java:149)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1300)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:153)
at android.app.ActivityThread.main(ActivityThread.java:5086)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
Run Code Online (Sandbox Code Playgroud)
在以下行中 -
java:96 actionBar.setTitle(mTitle);
Run Code Online (Sandbox Code Playgroud) 我目前正在构建一个使用材质设计主题作为基本主题的应用程序.
但是,操作栏在操作栏下方有一个暗阴影.我已经尝试了所有我能想到的东西,但我似乎无法摆脱它.这是一个显示我的意思的屏幕截图:https: //docs.google.com/file/d/0B_krkpxyd558V0p6a1NKZXFHeHc/edit?usp = docslist_api
如果有人能告诉我如何摆脱它,我会非常感激.
谢谢科里:)
我正在开发一个具有设计要求的应用程序,因为它应该只有ActionBar上的Title而不是App Icon.我尝试了从StackOverflow中找到的各种解决方案
getActionBar().setDisplayUseLogoEnabled(false);
getActionBar().setDisplayShowHomeEnabled(false);
getActionBar().setIcon(null);
Run Code Online (Sandbox Code Playgroud)
但是到目前为止这些都没有工作,即使我试图通过制作透明的ic_launcher图标并将其放入manifest.xml来进行黑客/修复,但它会导致App安装图标变得透明.请帮忙
getActionBar().setDisplayShowHomeEnabled(false);
Run Code Online (Sandbox Code Playgroud)
在4.4 kitkat中完美运行,但在降级版本中显示了这样的后退箭头
我需要像这样在每个设备上工作

我已经为我的ActionBar实现了Up导航,但是我在APi低于16时遇到了麻烦.
在运行4.0.4(API 15)的测试设备上,我可以点击ActionBar中的Up图标,但它不会转到我在清单中定义的父活动.
表现:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="app.name" >
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="19" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="" />
<activity
android:name=".Home"
android:label="@string/app_name"
android:screenOrientation="portrait" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".Buildings"
android:label="@string/title_activity_buildings"
android:parentActivityName=".Home"
android:screenOrientation="portrait" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".Home" />
</activity>
<activity
android:name=".Map"
android:label="@string/title_activity_map"
android:parentActivityName=".Home"
android:screenOrientation="portrait" >
<meta-data
android:name="android.support.PARENT_ACTIVITY" …Run Code Online (Sandbox Code Playgroud)