settitlecolor - how to set title text color in android




Цвет текста ActionBar (13)

как изменить цвет текста ActionBar? Я унаследовал тему Holo Light, я могу изменить фон ActionBar, но я не знаю, что является атрибутом для настройки цвета текста.

Хорошо, я могу изменить цвет текста с помощью атрибута android: textColorPrimary, но он также изменяет цвет текста выпадающего меню, отображаемого при переполнении на кнопках ActionBar. Любая идея, как изменить цвет выпадающего меню / списка?


Для Android 5 (леденец) вам нужно будет использовать android: actionBarPopupTheme, чтобы установить textColor для меню переполнения.


Добавьте его в корень панели действий. У меня была эта проблема.

<style name="ActionBar" parent="@style/Theme.AppCompat.Light">
    <item name="actionBarStyle">@style/Widget.Styled.ActionBar</item>
    <item name="actionMenuTextColor">@color/stdDarkBlueText</item>
</style>

<style name="Widget.Styled.ActionBar" parent="@style/Widget.AppCompat.Light.ActionBar">
    <item name="titleTextStyle">@style/ActionBarTitleText</item>
    <item name="subtitleTextStyle">@style/ActionBarSubTitleText</item>
</style>

<style name="ActionBarTitleText" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
    <item name="android:textColor">@color/stdDarkBlueText</item>
    <item name="android:textSize">12sp</item>
</style>

<style name="ActionBarSubTitleText" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Subtitle">
    <item name="android:textColor">@color/stdDarkBlueText</item>
    <item name="android:textSize">12sp</item>
</style>

actionMenuTextColor - изменяет цвет текста для текста панели действий, он никогда не работал, когда он был частью Widget.Styled.ActionBar , поэтому мне пришлось добавить его в корневой каталог. Другие 2 атрибута изменяют название и субтитры панели действий.


Идентификатор ActionBar недоступен напрямую, поэтому вам нужно немного взломать здесь.

int actionBarTitleId = Resources.getSystem().getIdentifier("action_bar_title", "id", "android");
if (actionBarTitleId > 0) {
    TextView title = (TextView) findViewById(actionBarTitleId);
    if (title != null) {
        title.setTextColor(Color.RED);
    }
}

Множество ответов устарело, поэтому я обновляю поток и показываю, как изменить цвет текста и backgroundcolor на ActionBar (панель инструментов) и всплывающее меню ActionBar.

Последний подход в Android (по состоянию на май 2018 года) при работе с панелью действий (панель инструментов) заключается в использовании темы с NoActionBar и использовании панели инструментов.

так вот что вам нужно:

  1. В Activity (который расширяет AppCompatActivity) объявите панель инструментов:

    Toolbar myToolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(myToolbar);
    
  2. Добавьте панель инструментов в макет xml. Здесь мы будем устанавливать наши пользовательские (перезаписанные темы), отметить android:theme="@style/ThemeOverlay.AppTheme.ActionBar" и app:popupTheme="@style/ThemeOverlay.AppTheme.PopupMenu" , они будут делать трюк.

    <android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="?attr/actionBarSize"
    android:theme="@style/ThemeOverlay.AppTheme.ActionBar"
    app:popupTheme="@style/ThemeOverlay.AppTheme.PopupMenu"
    app:layout_constraintTop_toTopOf="parent" />
    
  3. В вашем файле styles.xml вам придется перезаписать эти два стиля для установки пользовательских цветов:

    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="actionBarTheme">@style/ThemeOverlay.AppTheme.ActionBar</item>
    <item name="actionBarPopupTheme">@style/ThemeOverlay.AppTheme.PopupMenu</item>
    </style>
    
    <style name="ThemeOverlay.AppTheme.ActionBar" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
    <item name="android:textColorPrimary">@color/action_bar_text_color</item>
    <item name="android:background">@color/action_bar_bg_color</item>
    </style>
    
    <style name="ThemeOverlay.AppTheme.PopupMenu" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
    <item name="android:background">@color/popup_bg_color</item>
    <item name="android:textColorPrimary">@color/popup_text_color</item>
    </style>
    

Вот и все.

ps, если вы спросите меня, я бы сказал: ДА, вся эта тема - чертовщина.


Попробуйте добавить это в onCreate вашей деятельности. Работает практически на всех версиях Android.

 actionBar.setTitle(Html.fromHtml("<font color='#ffff00'>Your Title</font>"));  

или же

getSupportActionBar().setTitle(Html.fromHtml("<font color='#ffff00'>Your Title</font>"));

Попробуйте множество методов, в нижней версии API, допустимый метод: <item name="actionMenuTextColor">@color/your_color</item> и не использовать пространство имен Android, надеюсь, вам помогут

пс:

  <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="actionMenuTextColor">@color/actionMenuTextColor</item>
</style>

У меня была такая же проблема, как и у вас, это тема Holo.Light, но я хотел бы нарисовать цвет ActionBar, поэтому мне также нужно было изменить цвет текста, а также название и меню. Поэтому в конце я пошел в git hub и посмотрел на исходный код, пока не нахожу чертовски правильный стиль:

<?xml version="1.0" encoding="utf-8"?>
<!-- For honeycomb and up -->
<resources>

    <style name="myTheme" parent="@android:style/Theme.Holo.Light">
        <item name="android:actionBarStyle">@style/myTheme.ActionBar</item>
        <item name="android:actionMenuTextColor">@color/actionBarText</item>
    </style>

    <style name="myTheme.ActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
        <item name="android:background">@drawable/actionbarbground</item>
        <item name="android:titleTextStyle">@style/myTheme.ActionBar.Text</item>
    </style>

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

</resources>

так что теперь все, что вам нужно сделать, это установить все, что угодно: @color/actionBarText и @drawable/actionbarbground вы хотите!


Установка строки HTML на панели действий не работает в теме Material в SDK v21 +

Если вы хотите изменить его, вы должны установить основной цвет текста в вашем стиле.xml

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="android:Theme.Material.Light">
        <!-- Customize your theme here. -->
        <item name="android:textColorPrimary">@color/actionbar-text-color</item>
    </style>
</resources>    

Хорошо, я нашел лучший способ. Теперь я могу изменить цвет названия. Вы также можете настроить субтитры.

Вот мои styles.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <style name="MyTheme" parent="@android:style/Theme.Holo.Light">
    <item name="android:actionBarStyle">@style/MyTheme.ActionBarStyle</item>
  </style>

  <style name="MyTheme.ActionBarStyle" parent="@android:style/Widget.Holo.Light.ActionBar">
    <item name="android:titleTextStyle">@style/MyTheme.ActionBar.TitleTextStyle</item>
  </style>

  <style name="MyTheme.ActionBar.TitleTextStyle" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title">
    <item name="android:textColor">@color/red</item>
  </style>
</resources>

Эта функция работает хорошо

private void setActionbarTextColor(ActionBar actBar, int color) {

    String title = actBar.getTitle().toString();
    Spannable spannablerTitle = new SpannableString(title);
    spannablerTitle.setSpan(new ForegroundColorSpan(color), 0, spannablerTitle.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    actBar.setTitle(spannablerTitle);

}

то, чтобы использовать его, просто подайте ему свою панель действий и новый цвет, т. е.

ActionBar actionBar = getActionBar();    // Or getSupportActionBar() if using appCompat
int red = Color.RED
setActionbarTextColor(actionBar, red);

Это решение, которое я использовал после проверки всех ответов

<!-- Base application theme. -->
<style name="AppTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorAccent">@color/Button_color</item>
    <item name="android:editTextStyle">@style/EditTextStyle</item>
    <item name="android:typeface">monospace</item>
    <item name="android:windowActionBar">true</item>
    <item name="colorPrimary">@color/Title_Bar_Color</item>
    <item name="android:actionBarStyle">@style/Widget.Styled.ActionBar</item>
    <item name="actionBarStyle">@style/Widget.Styled.ActionBar</item>

</style>

<style name="EditTextStyle" parent="Widget.AppCompat.EditText"/>

<style name="Widget.Styled.ActionBar" parent="@style/Widget.AppCompat.Light.ActionBar">
    <item name="titleTextStyle">@style/ActionBarTitleText</item>
    <item name="android:background">@color/Title_Bar_Color</item>
    <item name="background">@color/Title_Bar_Color</item>
    <item name="subtitleTextStyle">@style/ActionBarSubTitleText</item>
</style>

<style name="ActionBarTitleText" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
    <item name="android:textColor">@color/solid_white</item>
    <item name="android:textSize">12sp</item>
</style>

<style name="ActionBarSubTitleText" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Subtitle">
    <item name="android:textColor">@color/solid_white</item>
    <item name="android:textSize">12sp</item>
</style>

Измените требуемые цвета, которые будут работать


Это старая тема, но для будущих читателей использование ToolBar делает все очень просто:

Toolbar toolbar = (Toolbar) findViewById(R.id.tool_bar);
toolbar.setTitle(R.string.app_name);
toolbar.setTitleTextColor(getResources().getColor(R.color.someColor));
setSupportActionBar(toolbar);

я сделал с простым кодом одной строки

actionBar.setTitle(Html.fromHtml("<font color='#ff0000'>ActionBartitle </font>"));




android-text-color