Is there a way to set actionbar backgound by image

2019-01-18 00:44发布

问题:

I need to change background of the action bar to a customized image, but every time I try to use this code it does not change a thing.

Bitmap b =  BitmapFactory.decodeResource(getResources(), R.drawable.navbarbg);
BitmapDrawable bd = new BitmapDrawable(getResources(), b);
bar.setBackgroundDrawable(bd);

Also I tried this code but it didn't work.

Resources res = getResources();
xpp =res.getXml(R.drawable.actionbar_background);
bitmapDrawable = (BitmapDrawable) BitmapDrawable.createFromXml (res, xpp);

The contents of actionbar_background.xml are

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/navbarbg"
android:tileMode="repeat" />

Edited: I used this code which worked fine:

Bitmap bMap = BitmapFactory.decodeResource(res, R.drawable.action_bar_bg);
BitmapDrawable actionBarBackground = new BitmapDrawable(res, bMap);
ActionBar bar = getActionBar();
bar.setBackgroundDrawable(actionBarBackground);

回答1:

I used this code which worked fine:

Bitmap bMap = BitmapFactory.decodeResource(res, R.drawable.action_bar_bg);
BitmapDrawable actionBarBackground = new BitmapDrawable(res, bMap);
ActionBar bar = getActionBar();
bar.setBackgroundDrawable(actionBarBackground);


回答2:

You can do it by playing around with styles.xml. Here is a detailed explanation. Look at the marked answer. It is explained for the actionbarsherlock. But the approach is same. If you need more details. Refer this link which is also given by other answerer.

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- the theme applied to the application or activity -->
    <style name="MyTheme" parent="@android:style/Theme.Holo">
        <!-- Here you are including your actual custom theme in which your own things are defined --> 
        <item name="android:actionBarStyle">@style/MyActionBar</item>
        <!-- other activity and action bar styles here -->
    </style>

    <!-- style for the action bar background which is named as "MyActionBar. The same name is being used in the above style." -->
    <style name="MyActionBar" parent="@android:style/Widget.Holo.ActionBar"> 
        <item name="android:background">@drawable/actionbar_background</item>
    </style>
</resources> 

Don't forget to include this custom theme in the manifest file like the below in order to have effect in the entire application.

<application android:theme="@style/MyTheme" />

You can even include this theme in activity wise, if you want it to make it only for specific activities. Hope this helps.



回答3:

getActionBar().setBackgroundDrawable(
    getResources().getDrawable(R.drawable.navbarbg));