android - 无法自定义ActionBar

时间:2012-08-22 22:58:51

标签: java android android-actionbar

不知何故,我很难找出一个看似简单的问题。我指定的所有属性(包括android:textandroid:textSizeandroid:textColorandroid:textAppearance似乎都没有对我的ActionBar执行任何操作。当我运行我的项目时,ActionBar上的“MainActivity”仍为白色和默认字体大小。我正在使用API​​级别16。

这是我的styles.xml:

<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="AppTheme" parent="android:style/Theme.Holo">
        <item name="android:actionBarStyle">@style/ActionBar</item>
    </style>

    <style name="ActionBar" parent="android:style/Widget.Holo.ActionBar">
        <item name="android:text">This String Is Not Showing Up In ActionBar!</item>
        <item name="android:textColor">@android:color/holo_orange_dark</item>
        <item name="android:textSize">44dp</item>
    </style>
</resources>

和我的AndroidManifest.xml:

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/title_activity_main" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

有人可以告诉我我做错了吗?

2 个答案:

答案 0 :(得分:2)

一些事情:

<item name="android:text">This String Is Not Showing Up In ActionBar!</item>

这不起作用。 应使用清单中的活动标签字段或访问活动中的操作栏对象来设置操作栏标题。

更新:被删除的信息部分不准确。事实证明,可以使用android:title标签在styles.xml中设置操作栏的标题。这是一个更准确的解决方案:

 <style name="ActionBar" parent="android:style/Widget.Holo.ActionBar">
    <item name="android:title">This String WILL show up in the ActionBar!</item>
    <item name="android:textColor">@android:color/holo_orange_dark</item>
    <item name="android:textSize">44dp</item>
</style>

OLD ANSWER

要更改操作栏标题(titleTextStyle)的文字样式,您需要一种新样式:

<style name="Text.ActionBar">
    <item name="android:textColor">@android:color/holo_orange_dark</item>
    <item name="android:textSize">44dp</item>
</style>

并从您的操作栏样式

引用它
<style name="ActionBar" parent="android:style/Widget.Holo.ActionBar">
    <item name="android:titleTextStyle">@style/Text.ActionBar</item>        
</style>

有关动作栏中主题样式的更多信息,请查看R.attr文档。

答案 1 :(得分:0)

我能用以下代码做类似的事情。 PS - 我使用了Appcompat,但由于你使用的是ApI 16,你可以使用当前的ActionBar。

<!-- general styles for the action bar -->
<style name="MyActionBar" parent="@style/Widget.AppCompat.ActionBar">
    <item name="android:titleTextStyle">@style/TitleTextStyle</item>
    <item name="android:background">@drawable/actionbar_background</item>
</style>

<!-- action bar title text -->
<style name="TitleTextStyle"  parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
    <item name="android:textColor">@color/actionbar_text</item>
    <item name="android:textSize">100sp</item>
</style>

<!-- Application theme. -->
<style name="AppTheme" parent="AppCompatTheme">

    <!-- All customizations that are NOT specific to a particular API-level can go here. -->
    <item name="android:actionBarStyle">@style/MyActionBar</item>
</style>