studio - ¿Hay alguna manera de establecer un backgound de barra de acciones por imagen en Android?
programa para modificar colores de una imagen (3)
Usé este código que funcionó bien:
Bitmap bMap = BitmapFactory.decodeResource(res, R.drawable.action_bar_bg);
BitmapDrawable actionBarBackground = new BitmapDrawable(res, bMap);
ActionBar bar = getActionBar();
bar.setBackgroundDrawable(actionBarBackground);
Necesito cambiar el fondo de la barra de acciones a una imagen personalizada, pero cada vez que trato de usar este código, no cambia nada.
Bitmap b = BitmapFactory.decodeResource(getResources(), R.drawable.navbarbg);
BitmapDrawable bd = new BitmapDrawable(getResources(), b);
bar.setBackgroundDrawable(bd);
También probé este código pero no funcionó.
Resources res = getResources();
xpp =res.getXml(R.drawable.actionbar_background);
bitmapDrawable = (BitmapDrawable) BitmapDrawable.createFromXml (res, xpp);
Los contenidos de actionbar_background.xml son
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/navbarbg"
android:tileMode="repeat" />
Editado: utilicé este código que funcionó bien:
Bitmap bMap = BitmapFactory.decodeResource(res, R.drawable.action_bar_bg);
BitmapDrawable actionBarBackground = new BitmapDrawable(res, bMap);
ActionBar bar = getActionBar();
bar.setBackgroundDrawable(actionBarBackground);
getActionBar().setBackgroundDrawable(
getResources().getDrawable(R.drawable.navbarbg));
Puedes hacerlo jugando con styles.xml.
Aquí hay una explicación detallada. Mire la respuesta marcada. Se explica para el actionbarsherlock. Pero el enfoque es el mismo. Si necesitas más detalles Consulte este enlace que también es proporcionado por otro respondedor.
<?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>
No olvide incluir este tema personalizado en el archivo de manifiesto como el siguiente para que tenga efecto en toda la aplicación.
<application android:theme="@style/MyTheme" />
Incluso puede incluir este tema en lo que respecta a la actividad, si lo desea solo para actividades específicas. Espero que esto ayude.