1

Я собираюсь рискнуть представителем, если это спросит раньше, но я действительно разочарован Android (или только я). Я пытаюсь изменить цвет текста заголовка на моем ActionBar от белого до красного и вставить логотип рядом с текстом, и ничто не изменит его.Цвет текста заголовка не изменяется и вставляет логотип на ActionBar

Title Text

Я искал и искал С.О. и перепробовал множество решений, как:

How to change color of ActionBar's Title Text on Android 4.3 api 18

Change the title text color in android action bar via xml

, но ничего не работает для меня. Я надеюсь, кто-то может указать на мое непонимание.

Вот мой Manifest фрагмент:

<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 (разреш/ценности-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); 
} 

... 
... 
... 

Благодарю вас так много.

+0

шестигранных попробуйте переместить свой код стиля в файл стилей в папке значений (не значения-14) могут быть решать проблемы, и если вы получите какую-либо ошибку, как 'требует API level' в стиль use 'tools: targetApi' для получения дополнительной информации об этом см. http://stackoverflow.com/questions/15339150/androidactionbarstyle-requires-api-level-11 –

ответ

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-v7 устанавливает setDisplayShowHomeEnabled в значение 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); 
+0

Большое вам спасибо! Ваше решение работает прямо «с места»! Я не знал о SpannableString, о котором я, вероятно, должен заглянуть. Ваше объяснение значка, безусловно, то, что мне нужно. Я пытался изменить цвет текста заголовка и вставить значок с помощью styles.xml. Есть ли способ сделать это? – Allen

+0

Я еще не пробовал стили настройки для appcompat-v7 (я не использую appcompat, но прочитал большую часть исходного кода). Стили в appcompat - это чудовище :(Я посмотрю, смогу ли я что-нибудь придумать. –

+1

upvote для ответа и вашей информации –

1

Это изменит цвет текста:

ActionBar ab = getActionBar(); 
ab.setTitle(Html.fromHtml("<font color='#ff0000'>YourTitleHere </font>")); 
+0

Спасибо. Мне тоже нравится ваше решение, потому что оно превратило текст заголовка в красный. Это дало мне надежду! Однако я не мог заставить ab.setIcon работать. – Allen

 Смежные вопросы

  • Нет связанных вопросов^_^