2015-03-06 3 views
0

Я изменил цвет панели действий и другие вещи, чтобы открыть их в требуемом цвете и тексте, но когда я открываю приложение: приложение открывается с темой по умолчанию и сразу же изменяет данную тему.Изменение панели действий при открытии в Android

Это происходит в телефонах, таких как Galaxy Nexus, Nexus 4, но не на Nexus 5. Я не уверен, почему это происходит?

Я поставил ActionBar перед setContentView в моем APP

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 

    getActionBar().setDisplayHomeAsUpEnabled(true); 
    getActionBar().setDisplayShowHomeEnabled(true); 
    getActionBar().setIcon(android.R.color.transparent); 
    getActionBar().setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.actionBarColor))); 

    setContentView(R.layout.activity_main); 
} 

я получил тему с помощью: http://jgilfelt.github.io/android-actionbarstylegenerator/

Мой стиль, который я получил от выше выглядит следующим образом:

<style name="Theme.link" parent="@android:style/Theme.Holo"> 
    <item name="android:actionOverflowButtonStyle">@style/ThemeFor.OverFlow</item> 
    <item name="android:actionBarItemBackground">@drawable/selectable_background_link</item> 
    <item name="android:popupMenuStyle">@style/PopupMenu.link</item> 
    <item name="android:dropDownListViewStyle">@style/DropDownListView.link</item> 
    <item name="android:actionBarTabStyle">@style/ActionBarTabStyle.link</item> 
    <item name="android:actionDropDownStyle">@style/DropDownNav.link</item> 
    <item name="android:actionBarStyle">@style/ActionBar.Solid.link</item> 
    <item name="android:actionModeBackground">@drawable/cab_background_top_link</item> 
    <item name="android:actionModeSplitBackground">@drawable/cab_background_bottom_link</item> 
    <item name="android:actionModeCloseButtonStyle">@style/ActionButton.CloseMode.link</item> 
</style> 

<style name="ActionBar.Solid.link" parent="@android:style/Widget.Holo.ActionBar.Solid"> 
    <item name="android:background">@drawable/ab_background_textured</item> 
    <item name="android:backgroundStacked">@drawable/ab_stacked_solid_link</item> 
    <item name="android:backgroundSplit">@drawable/ab_background_textured_link</item> 
    <item name="android:progressBarStyle">@style/ProgressBar.link</item> 
</style> 

<style name="ActionBar.Transparent.link" parent="@android:style/Widget.Holo.ActionBar"> 
    <item name="android:background">@drawable/ab_transparent_link</item> 
    <item name="android:progressBarStyle">@style/ProgressBar.link</item> 
</style> 

<style name="PopupMenu.link" parent="@android:style/Widget.Holo.ListPopupWindow"> 
    <item name="android:popupBackground">@drawable/menu_dropdown_panel_link</item> 
</style> 

<style name="DropDownListView.link" parent="@android:style/Widget.Holo.ListView.DropDown"> 
    <item name="android:listSelector">@drawable/selectable_background_link</item> 
</style> 

<style name="ActionBarTabStyle.link" parent="@android:style/Widget.Holo.ActionBar.TabView"> 
    <item name="android:background">@drawable/tab_indicator_ab_link</item> 
</style> 

<style name="DropDownNav.link" parent="@android:style/Widget.Holo.Spinner"> 
    <item name="android:background">@drawable/spinner_background_ab_link</item> 
    <item name="android:popupBackground">@drawable/menu_dropdown_panel_link</item> 
    <item name="android:dropDownSelector">@drawable/selectable_background_link</item> 
</style> 

<style name="ProgressBar.link" parent="@android:style/Widget.Holo.ProgressBar.Horizontal"> 
    <item name="android:progressDrawable">@drawable/progress_horizontal_link</item> 
</style> 

<style name="ActionButton.CloseMode.link" parent="@android:style/Widget.Holo.ActionButton.CloseMode"> 
    <item name="android:background">@drawable/btn_cab_done_link</item> 
</style> 

<!-- this style is only referenced in a Light.DarkActionBar based theme --> 
<style name="Theme.link.Widget" parent="@android:style/Theme.Holo"> 
    <item name="android:popupMenuStyle">@style/PopupMenu.link</item> 
    <item name="android:dropDownListViewStyle">@style/DropDownListView.link</item> 
</style> 

И я называю тему в манифесте:

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/Theme.link" > 
    <activity 
     android:name=".Link_Main" 
     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=".Link_Support" 
     android:label="@string/action_support" 
     android:screenOrientation="portrait" > 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value="com.ylg.linking.Link_Main" /> 
    </activity> 
</application> 

Может ли кто-нибудь помочь мне исправить это?

Спасибо!

+0

Установите значок и цвет фона панели действий, используя только styles.xml. Вы делаете это программно в onCreate(), вызывающем эту проблему. @TheDevMan – Pooja

+0

@Pooja: Как добавить оба значения в styles.xml? – TheDevMan

+0

Я отправил ответ, пожалуйста, проверьте его и дайте мне знать. @ TheDevMan – Pooja

ответ

0

Постарайтесь добавить <item name="android:actionBarStyle">@style/Theme.link</item> к своей базе. Стиль активности в AndroidManifest.xml.

+0

Не могли бы вы объяснить, что мне нужно сделать? – TheDevMan

0

Я думаю, вы должны изменить значение для android:background в ActionBar.Solid.link до @color/actionBarColor.

+0

Нет разницы. :( – TheDevMan

+0

Не могли бы вы показать свой AndroidManifest.xml? – Michael

+0

Единственное изменение, о котором я могу думать, это применить 'Theme.link' непосредственно к действию' Link_Main'. И как выглядит экран загрузки, когда тема не является Приложите скриншот, пожалуйста? – Michael

0

Это происходит потому, что, когда приложение запускается, оно получает стиль от styles.xml, поэтому ваш стиль по умолчанию будет виден вам, и после этого вы меняете панель actiob в onCreate(), поэтому тема меняется немедленно. Чтобы решить эту проблему, установите значок и цвет фона панели действий, используя styles.xml, используя только код ниже. Попробуйте. Надеюсь, что это работает.

<style name="AppBaseTheme" parent="@android:style/Theme.Holo.Light"> 
     ..... 

    <item name="android:actionBarStyle">@style/MyActionBar</item> 
</style> 

<style name="MyActionBar" arent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse"> 
    <item name="android:background">@color/actionBarColor</item> 
    <item name="android:text">""</item> 
    <item name="android:icon">@android:color/transparent</item> 
</style> 

И удалите нижеследующий код.

getActionBar().setIcon(android.R.color.transparent); 
getActionBar().setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.actionBarColor))); 
Смежные вопросы