54 votes

Barre d'action Android translucide personnalisée

J'ai parcouru les sites internet (par exemple la documentation Android, les réponses ici, etc.) pour trouver la réponse à ce que je pensais être une question assez triviale. Comment faire pour obtenir une barre d'action translucide comme celle de l'application Google Music y YouTube (les liens sont des exemples d'images) ?

Je souhaite que le contenu vidéo soit affiché en plein écran et ne soit pas contraint ou repoussé vers le bas par la barre d'action, tout en tirant parti des avantages d'un composant intégré à l'interface utilisateur. Je peux évidemment utiliser une vue entièrement personnalisée, mais je préfère tirer parti de la barre d'action si possible.

Manifeste

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

Activité

// 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);

Menu

<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>

Vue personnalisée de la barre d'action

<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>

0 votes

0voto

mechdon Points 457

J'aimerais partager avec vous les étapes que j'ai suivies pour y parvenir :

1) Lors du OnCreate de votre activité,

getWindow().requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY);

puis

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

Ceci est fait avant setContentView.

2) Après setContentView, vous pouvez procéder comme suit

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

La valeur alpha de 0 signifie qu'il est totalement transparent.

0voto

Sunil Kumar Points 11

Étape I : Tout d'abord, définissez votre thème dans le fichier styles.xml.

    <style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    </style>

Étape II : Ensuite, vous devez définir le thème de votre activité dans AndroidManifest.xml.

    <activity android:name=".activity.YourActivity"
        android:theme="@style/AppTheme.NoActionBar"/>

Étape III : Maintenant, dans votre fichier de mise en page d'activité, définissez comme ceci :

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/agri_bg_login">
        <android.support.v7.widget.Toolbar
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/tool_bar"
            android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/>
    </RelativeLayout>

Enfin, vous pouvez le définir dans votre activité.

    Toolbar tool_bar = findViewById(R.id.tool_bar);
    setSupportActionbar(tool_bar);
    getSupportActionbar().setTitle("Your actionbar title");
    getSupportActionbar().setDisplayHomeAsUpEnabled(true);

C'est tout, vous obtiendrez un résultat avec une Actionbar transparente. De même, si vous souhaitez afficher le bouton de basculement du tiroir et le menu, il les affichera.

0voto

Vikram Bodicherla Points 3855

Je sais que cette question est ancienne, mais quand même. Avez-vous manqué cela dans la documentation ?

http://developer.Android.com/guide/topics/ui/actionbar.html#Style

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X