Is there a way to set actionbar backgound by image in android?
Asked Answered
A

3

3

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);
Assertion answered 31/12, 2012 at 16:52 Comment(0)
A
10

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);
Assertion answered 31/1, 2013 at 12:37 Comment(0)
M
6

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.

Magician answered 31/12, 2012 at 17:14 Comment(2)
The whole application and the whole listView had the same background which made everything look bad also I tried to use it on the action bar but nothing happened. also tried to add the style to the activity and every thing in the activity had the background that won't work.Assertion
You might be going somewhere wrong. Because it works and I had it worked in my project. Edit your question with your code, if you still don't get it.Magician
M
3
getActionBar().setBackgroundDrawable(
    getResources().getDrawable(R.drawable.navbarbg));
Meg answered 6/9, 2014 at 15:32 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.