Comment rendre la barre d'outils transparente?

C'est un poste personnel de Q & A J'ai un ActionBar transparent qui superpose la mise en page. Après la migration vers la dernière bibliothèque de support, j'ai forcé de débarrasser la barre d'action par la barre d'outils. Les anciennes façons de le rendre transparent et superposé à cette mise en page ne fonctionnent pas

<style name="CustomActionBarTheme" parent="@android:style/Theme.AppCompat"> <item name="android:windowActionBarOverlay">true</item> <item name="windowActionBarOverlay">true</item> <item name="android:actionBarStyle">@style/TransparentActionBar</item> </style> <style name="TransparentActionBar" parent="@android:style/Widget.Holo.Light.ActionBar"> <item name="android:background">@android:color/transparent</item> </style> 

  • Style un bouton pour ressembler à un EditText (mais se comporte toujours comme un bouton)
  • Obtenir tous les enregistrements de sqlite android
  • Layout_weight ne fonctionne pas dans scrollview
  • Le chemin du système de fichiers est utilisé par Context.openFileOutput () de Android?
  • Classe statique en Java (Android) - utiliser ou ne pas utiliser
  • Android Studio 2.2 aperçu 1 Erreur EditText
  • Android ndk multitouch?
  • NoOptions ne peut pas être résolu à un type
  • Suppression de la ligne dans SQLite dans Android
  • Les animations personnalisées pour démarrer des activités dans Android ne fonctionnent pas comme prévu
  • Layout Layers? Z-Axis?
  • Activer un positionnement fixe réel sur les navigateurs Android de Samsung
  • 12 Solutions collect form web for “Comment rendre la barre d'outils transparente?”

    Tout ce qu'il faut, c'est définir le thème qui masque la barre d'action, définit le style de la barre d'action avec un arrière-plan transparent et définit ce style dans le widget de la barre d'outils. Veuillez noter que la barre d'outils doit être dessinée comme dernière vue (sur toute l'arborescence de la vue)

     <style name="Theme.Custom" parent="@android:style/Theme.AppCompat"> <item name="windowActionBar">false</item> <item name="windowActionBarOverlay">true</item> <item name="android:windowActionBarOverlay">true</item> </style> <style name="CustomActionBar" parent="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <item name="android:windowActionBarOverlay">true</item> <!-- Support library compatibility --> <item name="windowActionBarOverlay">true</item> </style> 

    Disposition:

     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- Toolbar should be above content--> <include layout="@layout/toolbar" /> </RelativeLayout> 

    Disposition de la barre d'outils:

     <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" app:theme="@style/CustomActionBar"/> 

    La barre d'outils fonctionne comme une vue, donc la réponse est très simple.

     toolbar.getBackground().setAlpha(0); 

    Créez votre fichier toolbar.xml avec l'arrière-plan d'AppBarLayout est @null

     <?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.AppBarLayout android:id="@+id/general_appbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@null" xmlns:android="http://schemas.android.com/apk/res/android"> <android.support.v7.widget.Toolbar android:layout_width="match_parent" android:layout_height="?attr/actionBarSize"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:text="Login" android:textSize="20sp"/> </android.support.v7.widget.Toolbar> </android.support.design.widget.AppBarLayout> 

    Et voici le résultat:

    Entrez la description de l'image ici

    Ajoutez la ligne suivante dans style.xml

     <style name="Base.Theme.AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar"> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> </style> <style name="AppTheme" parent="Base.Theme.AppTheme"> </style> 

    Ajoutez maintenant la ligne suivante dans style-v21,

      <style name="AppTheme" parent="Base.Theme.AppTheme"> <item name="android:windowDrawsSystemBarBackgrounds">true</item> <item name="android:statusBarColor">@android:color/transparent</item> </style> 

    Et définir le thème comme Android: theme = "@ style / AppTheme"

    Cela rendra la barre d'état transparente.

    Utilisez simplement le code xml suivant:

    Code pour la mise en page:

     <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/def_toolbar" android:layout_height="wrap_content" android:layout_width="match_parent" android:minHeight="?attr/actionBarSize" android:background="@color/toolbarTransparent" android:layout_alignParentTop="true" /> 

    Et ajoutez le code suivant dans les couleurs.xml :

     <color name="toolbarTransparent">#00FFFFFF</color> 

    Cela vous donnera la sortie souhaitée.

    Peut-être que vous devez jeter un oeil à cette carte d'action transparente avec AppCompat-v7 21

    Les points que la publication suggère sont

    1. Assurez-vous simplement d'utiliser RelativeLayout pour installer la barre d'outils et le corps.
    2. Placez la barre d'outils dans la dernière.
    3. Mettez une couleur transparente pour Android: l'attribut de fond de la barre d'outils

    Cela devrait résoudre le problème sans trop de tracas.

    Vérification de l'exemple de Google Source Code J'ai découvert comment rendre la barre d'outils complètement transparente. C'était plus simple que ce que je pensais. Il suffit de créer une Forme simple pouvant être dessinée comme celle-ci.

    Le nom du drawable est toolbar_bg

     <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" > <gradient android:angle="90" android:startColor="@android:color/transparent" android:endColor="@android:color/transparent" android:type="linear" /> </shape> 

    Ensuite, dans le fragment ou l'activité … Ajoutez la barre d'outils comme celle-ci.

      <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:layout_alignParentStart="true" android:layout_alignParentTop="true" android:background="@drawable/toolbar_bg" android:popupTheme="@style/ThemeOverlay.AppCompat.Light" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/> 

    Et ici, nous aurons une barre d'outils entièrement transparente.

    Entrez la description de l'image ici

    N'ajoutez pas <android.support.design.widget.AppBarLayout > si vous le faites, cela ne fonctionnera pas.

    Remarque: si vous avez besoin d'AppBarLayout, réglez l'élévation sur 0 afin de ne pas dessiner son ombre.

    La manière la plus simple de mettre une barre d'outils transparente est de définir une opacité dans la section @colors , de définir un TransparentTheme dans la section @styles , puis de les mettre dans votre barre d'outils.

    @ Colors.xml

     <color name="actionbar_opacity">#33000000</color> 

    @ Styles.xml

     <style name="TransparentToolbar" parent="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <item name="android:windowActionBarOverlay">true</item> <item name="windowActionBarOverlay">true</item> </style> 

    @ Activity_main.xml

     <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:background="@color/actionbar_opacity" app:theme="@style/TransparentToolbar" android:layout_height="?attr/actionBarSize"/> 

    C'est le résultat:

    Barre d'outils transparente de capture d'écran

    J'ai implémenté une barre d'outils translucide en créant deux thèmes Theme.AppCompat.Light.NoActionBar et définissant colorPrimary attribute to transparent color.

    1) Créer deux thèmes Créez un thème avec une barre d'outils opaque:

     <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Toolbar background color --> <item name="colorPrimary">#ff212cff</item> </style> 

    Deuxième thème pour transparente / superposition Barre d'outils:

     <style name="AppTheme.Overlay" parent="AppTheme"> <item name="colorPrimary">@color/transparent</item> </style> 

    2) Dans la mise en page de votre activité, placez la barre d'outils derrière le contenu afin qu'il puisse l'afficher en face:

     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <fragment android:id="@+id/container" android:name="com.test.CustomFragment" android:layout_width="match_parent" android:layout_height="match_parent"/> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?attr/colorPrimary" android:minHeight="?attr/actionBarSize" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/> </RelativeLayout> 

    3) Appliquer le thème transparent à votre activité dans AndroidManifest.xml

      <activity android:name="com.test.TransparentActivity" android:parentActivityName="com.test.HomeActivity" android:theme="@style/AppTheme.Overlay" > <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.test.HomeActivity" /> </activity> 

    Je sais que je suis en retard pour la fête. J'ai créé une classe simple pour gérer la transparence de la Toolbar .

     import android.annotation.SuppressLint; import android.graphics.drawable.ColorDrawable; import android.support.v7.widget.Toolbar; public class TransparentToolbarManager { private Toolbar mToolbar; private ColorDrawable colorDrawable; public static final int MAX_ALPHA = 255, MIN_ALPHA = 0; public TransparentToolbarManager(Toolbar mToolbar) { this.mToolbar = mToolbar; this.colorDrawable = new ColorDrawable(mToolbar.getContext().getResources().getColor(R.color.colorPrimary)); } public TransparentToolbarManager(Toolbar mToolbar, ColorDrawable colorDrawable) { this.mToolbar = mToolbar; this.colorDrawable = colorDrawable; } //Fading toolbar public void manageFadingToolbar(int scrollDistance) { if (mToolbar != null && colorDrawable != null) { //FadeinAndOut according to the horizontal scrollValue if (scrollDistance <= MAX_ALPHA && scrollDistance >= MIN_ALPHA) { setToolbarAlpha(scrollDistance); } else if (scrollDistance > MAX_ALPHA) { setToolbarAlpha(MAX_ALPHA); } } } @SuppressLint("NewApi") public void setToolbarAlpha(int i) { colorDrawable.setAlpha(i); if (CommonHelper.isSupport(16)) { mToolbar.setBackground(colorDrawable); } else { mToolbar.setBackgroundDrawable(colorDrawable); } } } 

    Et le CommonHelper.isSupport ()

     public static boolean isSupport(int apiLevel) { return Build.VERSION.SDK_INT >= apiLevel; } 

    Ajoutez simplement android:background="@android:color/transparent" comme ci-dessous dans votre mise en page d'appbar

     <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@android:color/transparent"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:popupTheme="@style/AppTheme.PopupOverlay" /> </android.support.design.widget.AppBarLayout>` 

    Essayez le code ci-dessous

     <android.support.design.widget.AppBarLayout android:id="@+id/app_bar" android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/AppTheme.Transparent" > <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:popupTheme="@style/AppTheme.PopupOverlay" /> </android.support.design.widget.AppBarLayout> 

    Style.xml

     <style name="AppTheme.Transparent" parent="ThemeOverlay.AppCompat.Light"> <item name="colorPrimary">@android:color/transparent</item> <item name="colorControlActivated">@color/colorWhite</item> <item name="colorControlNormal">@color/colorWhite</item> </style> 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.