1

如果之前问过这个问题,我会冒代表的风险,但我对 Android(或只是我自己)感到非常沮丧。我正在尝试将我的 ActionBar 上的标题文本的颜色从白色更改为红色,并在文本旁边插入一个徽标,但似乎没有任何改变。

标题文字

我搜索并搜索了 SO 并尝试了许多解决方案,例如:

如何在 Android 4.3 api 18 上更改 ActionBar 标题文本的颜色

通过xml更改android操作栏中的标题文本颜色

但没有什么对我有用。我希望有人能指出我缺乏理解。

这是我的清单片段:

<uses-sdk
    android:minSdkVersion="14"
    android:targetSdkVersion="21" />

<application
    android:allowBackup="true"
    android:icon="@drawable/small_bc_logo"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >

    <activity
        android:name=".BckmMainActivity"
        android:label="@string/app_name" >

我的 styles.xml (res/values-14),基本上是从我查看的第一个链接中复制的:

<style name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar">

    <item name="android:actionBarStyle">@style/ActionBarStyle</item>
    <!-- API 14 theme customizations can go here. -->
    <item name="android:textColor">@color/black</item>
    <item name="android:icon">@drawable/small_bc_logo</item>
</style>

<style name="ActionBarStyle" parent="@style/Widget.AppCompat.Light.ActionBar.Solid">
    <item name="android:titleTextStyle">@style/TitleBarTextColor</item>
</style>

<style name="TitleBarTextColor" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
    <item name="android:textColor">@color/red</item>
</style>

<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
    <!-- All customizations that are NOT specific to a particular API-level can go here. -->
</style>

我的颜色.xml:

<resources>
  <color name="red">#A52421</color>
  <color name="black">#000000</color>
</resources>

我的strings.xml:

<resources>

  <string name="app_name">BCKM</string>
  <string name="action_settings">Settings</string>

</resources>

并且只是添加更多信息我的主要活动类:

public class BckmMainActivity extends ActionBarActivity {

private final Handler handler = new Handler();

private PagerSlidingTabStrip tabs;
private ViewPager pager;
private MyPagerAdapter adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_bckm_main);

    tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs);
    pager = (ViewPager) findViewById(R.id.pager);
    adapter = new MyPagerAdapter(getSupportFragmentManager());

    pager.setAdapter(adapter);

    final int pageMargin = (int) TypedValue.applyDimension(
            TypedValue.COMPLEX_UNIT_DIP, 4, getResources()
                    .getDisplayMetrics());
    pager.setPageMargin(pageMargin);

    tabs.setViewPager(pager);
}

...
...
...

太感谢了。

4

2 回答 2

3

使用样式设置 appcompat 图标和标题文本颜色:

<style name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="actionBarStyle">@style/MyActionBar</item>
    <item name="navigationIcon">@drawable/ic_launcher</item>
</style>

<style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid">
    <item name="titleTextStyle">@style/TitleTextStyle</item>
    <item name="displayOptions">showHome|showTitle</item>
</style>

<style name="TitleTextStyle" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
    <item name="android:textColor">#A52421</item>
</style>

以编程方式设置 appcompat 图标和标题文本颜色:

要设置 ActionBar 标题的颜色,您需要使用 SpannableString。该图标未显示,因为 appcompat-v7setDisplayShowHomeEnabled默认设置为 false。调用后添加以下代码super.onCreate(Bundle)

SpannableString spannableString = new SpannableString(getString(R.string.app_name));
spannableString.setSpan(new ForegroundColorSpan(Color.RED), 0, spannableString.toString()
        .length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setIcon(R.drawable.ic_launcher);
getSupportActionBar().setTitle(spannableString);
于 2014-12-21T09:33:42.507 回答
1

这将改变文本颜色:

ActionBar ab = getActionBar();
ab.setTitle(Html.fromHtml("<font color='#ff0000'>YourTitleHere </font>"));
于 2014-12-21T09:08:16.367 回答