How to customize the back button on ActionBar

后端 未结 9 1162
抹茶落季
抹茶落季 2020-11-22 17:12

I have been able to customize the action bar\'s background, logo image and text color using suggestions from these:
Android: How to change the ActionBar "Home"

相关标签:
9条回答
  • 2020-11-22 17:45

    The "up" affordance indicator is provided by a drawable specified in the homeAsUpIndicator attribute of the theme. To override it with your own custom version it would be something like this:

    <style name="Theme.MyFancyTheme" parent="android:Theme.Holo">
        <item name="android:homeAsUpIndicator">@drawable/my_fancy_up_indicator</item>
    </style>
    

    If you are supporting pre-3.0 with your application be sure you put this version of the custom theme in values-v11 or similar.

    0 讨论(0)
  • 2020-11-22 17:46

    Changing back navigation icon differs for ActionBar and Toolbar.

    For ActionBar override homeAsUpIndicator attribute:

    <style name="CustomThemeActionBar" parent="android:Theme.Holo">
        <item name="homeAsUpIndicator">@drawable/ic_nav_back</item>
    </style>
    

    For Toolbar override navigationIcon attribute:

    <style name="CustomThemeToolbar" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="navigationIcon">@drawable/ic_nav_back</item>
    </style>
    
    0 讨论(0)
  • 2020-11-22 17:47

    I have checked the question. Here is the steps that I follow. The source code is hosted on GitHub: https://github.com/jiahaoliuliu/sherlockActionBarLab

    Override the actual style for the pre-v11 devices.

    Copy and paste the follow code in the file styles.xml of the default values folder.

    <resources>
        <style name="MyCustomTheme" parent="Theme.Sherlock.Light">
        <item name="homeAsUpIndicator">@drawable/ic_home_up</item>
        </style>
    </resources>
    

    Note that the parent could be changed to any Sherlock theme.

    Override the actual style for the v11+ devices.

    On the same folder where the folder values is, create a new folder called values-v11. Android will automatically look for the content of this folder for devices with API or above.

    Create a new file called styles.xml and paste the follow code into the file:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <style name="MyCustomTheme" parent="Theme.Sherlock.Light">
        <item name="android:homeAsUpIndicator">@drawable/ic_home_up</item>
        </style>
    </resources>
    

    Note tha the name of the style must be the same as the file in the default values folder and instead of the item homeAsUpIndicator, it is called android:homeAsUpIndicator.

    The item issue is because for devices with API 11 or above, Sherlock Action Bar use the default Action Bar which comes with Android, which the key name is android:homeAsUpIndicator. But for the devices with API 10 or lower, Sherlock Action Bar uses its own ActionBar, which the home as up indicator is called simple "homeAsUpIndicator".

    Use the new theme in the manifest

    Replace the theme for the application/activity in the AndroidManifest file:

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/MyCustomTheme" >
    
    0 讨论(0)
提交回复
热议问题