studio personalizar navegacion color cambiar barra bar android android-actionbar android-5.0-lollipop android-4.0-ice-cream-sandwich android-3.0-honeycomb

personalizar - Custom Translucent Android ActionBar



status bar transparent android (6)

Además de la respuesta correcta, si está utilizando AppcomatActivity, llame a supportRequestWindowFeature en lugar de

Versión anterior: getWindow().requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY);

Quieres usar:

@Override protected void onCreate(Bundle savedInstanceState) { supportRequestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY); super.onCreate(savedInstanceState); }

He estado recorriendo las interwebs (por ejemplo, documentación de Android, respuestas aquí, etc.) para encontrar la respuesta a lo que pensé que sería una pregunta bastante trivial. ¿Cómo logras una barra de acción translúcida como la de Google Music y YouTube (los enlaces son ejemplos de imágenes)?

Quiero que el contenido de video sea a pantalla completa y no esté restringido / presionado hacia abajo por la barra de acción, al mismo tiempo que se aprovechan los beneficios de un componente de IU integrado. Obviamente puedo usar una vista completamente personalizada, pero prefiero aprovechar la barra de acción si es posible.

Manifiesto

<activity android:name="videoplayer" android:theme="@android:style/Theme.Holo" android:launchMode="singleTop" android:configChanges="keyboardHidden|orientation"/>

Actividad

// Setup action bar ActionBar actionBar = getActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); View customActionBarView = getLayoutInflater().inflate(R.layout.player_custom_action_bar, null); actionBar.setCustomView(customActionBarView, new ActionBar.LayoutParams(ActionBar.LayoutParams.MATCH_PARENT, R.dimen.action_bar_height)); actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);

Menú

<menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/button1" android:icon="@drawable/button1" android:showAsAction="always"/> <item android:id="@+id/button2" android:icon="@drawable/button2" android:showAsAction="always"/> </menu>

Vista personalizada de la barra de acción

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/custom_action_bar" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:gravity="center" android:background="@color/TranslucentBlack"> <!--Home icon with arrow--> <ImageView android:id="@+id/home" android:src="@drawable/home" android:layout_width="wrap_content" android:layout_height="match_parent"/> <!--Another image--> <ImageView android:id="@+id/image" android:layout_width="wrap_content" android:layout_height="match_parent" android:visibility="visible"/> <!--Text if no image--> <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="center_vertical" android:visibility="gone"/> <!--Title--> <TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="match_parent" android:paddingLeft="20dp" android:gravity="center_vertical"/> </LinearLayout>


Creo que deberías poder hacer esto usando el indicador de ventana FEATURE_ACTION_BAR_OVERLAY .

Antes de llamar a setContentView() en su actividad,

Llamada:

getWindow().requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY);

Y utilizará una ActionBar de ActionBar superpuesta en lugar de empujar hacia abajo su ventana.


El código anterior es absolutamente correcto para hacer una barra de acción.

En lugar de

getActionBar().setBackgroundDrawable(new ColorDrawable(Color.argb(128, 0, 0, 0)))

utilizar

getActionBar().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));

De esta manera, podrás ver la barra de acción totalmente transparente.


Si desea que su actividad sea de pantalla completa pero aún muestre una barra de acción, pero con un alfa tiene que solicitar overlaymode para la barra de onCreate() en onCreate() de su actividad:

getWindow().requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY); //getWindow().requestFeature(WindowCompat.FEATURE_ACTION_BAR_OVERLAY); << Use this for API 7+ (v7 support library)

Luego, después de llamar a setContentView(..) (dado que setContentView(..) también inicializa la barra de acción junto a la configuración del contenido), puede establecer un dibujo de fondo en su barra de acción:

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

que puede ser una forma dibujable con un alfa puesto en res / drawable:

<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <solid android:color="#BB000000" /> </shape>

También puedes hacer esto completamente programáticamente creando un ColorDrawable :

getActionBar().setBackgroundDrawable(new ColorDrawable(Color.argb(128, 0, 0, 0)));

De lo contrario, por supuesto, puede ocultar la barra de acción completamente; En ese caso, puede establecer un tema personalizado para su actividad en su manifiesto:

@android:style/Theme.NoTitleBar.Fullscreen

o programáticamente llamando

getActionBar().hide();


Solo quiero compartir con ustedes los pasos que tomé para lograr esto:

1) En el OnCreate de tu actividad,

getWindow().requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY);

entonces

getWindow().setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION, WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);

Esto se hace antes de setContentView.

2) Después de setContentView, puedes hacer lo siguiente

getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.argb(0, 100, 181, 246)));

Donde el valor alfa de 0 significa que es totalmente transparente.


Aquí es cómo conseguí esto para trabajar:

1) Solicitud de superposición de la barra de acción mediante programación llamando

getWindow().requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY);

este ''requestFeature ()'' debe solicitarse a su actividad en el método ''onCreate ()'' antes de llamar a ''setContentView (R.layout.my_layout)'':

2) establece el color de la barra de setBackgroundDrawable() llamando a setBackgroundDrawable() manera:

getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#00212121")) );

este método requiere una referencia a un dibujable o también puede usar un analizador de color para analizar un valor de color hexadecimal (los primeros 2 dígitos se usan para el canal alfa que comienza en # 00 a #FF)

Tenga en cuenta que estoy usando actionBarSherlok getSupportActionBar() pero esto debería funcionar con cualquier barra de acción.

Si aún no puede hacer que esto funcione, intente agregarlo a su estilo de tema

<item name="windowActionBarOverlay">true</item> <item name="android:actionBarStyle">@style/ActionBar.Transparent.Example</item> <item name="android:windowActionBarOverlay">true</item>