web-dev-qa-db-fra.com

commenter les icônes dans la barre d'outils d'Android studio

J'ai posé une question similaire ici ... J'ai eu quelques tutoriels dans les réponses. Mais cette question est différente. car aucune de cette méthode ne fonctionne dans mon projet. 

Je veux centrer toutes les icônes dans la barre d'outils

Je teste tous les moyens disponibles ... mais les icônes flottent toujours à gauche.

Je veux des icônes de centrage (je préfère les icônes de gauche, flottantes. Les icônes de gauche, droite, et les autres, centrale).

Activity.Main.xml

<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:tools="http://schemas.Android.com/tools"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:orientation="vertical"   // I add vertical
    tools:context=".MainActivity">

    <include
        Android:id="@+id/tool_bar"
        layout="@layout/tool_bar"
        Android:layout_height="wrap_content"
        Android:layout_width="match_parent"  // I add match_parent
        Android:layout_gravity="center" />   // I add center
</LinearLayout>.

Aussi dans tool_bar.xml

<?xml version="1.0" encoding="utf-8"?>
<Android.support.v7.widget.Toolbar
    Android:layout_height="wrap_content"
    Android:layout_height="match_parent"
    Android:background="@color/ColorPrimary"
    Android:elevation="2dp"
    Android:theme="@style/Base.ThemeOverlay.AppCompat.Dark"
    Android:layout_gravity="center"  // I add center
    xmlns:Android="http://schemas.Android.com/apk/res/Android" />

dans main_menu.xml

<menu 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" tools:context=".MainActivity">

<item
    Android:id="@+id/action_forward"

    Android:title="forward"
    Android:icon="@drawable/ic_action_arrow_forward"
    app:showAsAction="always"
    ></item>


<item
    Android:id="@+id/action_zoom_in"
    Android:title="zoom in"
    Android:icon="@drawable/ic_action_zoom_in"
    app:showAsAction="always"
    ></item>
<item ...

et pour le code ci-dessus (main_menu.xml) dans <item> j'ai essayé tous ces codes:

Android:layout_width="match_parent"
Android:layout_weight=".2" // 20%
Android:gravity="center"
Android:layout_centerVertical="true"
Android:layout_centerHorizontal="true"

Je ne sais vraiment pas ce que je peux faire pour aligner les icônes . J'ai googlé des heures et j'ai tout essayé

quel est mon tort? pour tous les tests je ne peux voir aucun changement ...enter image description here

avant je voulais pic2 (dans l'image ci-dessus) Mais maintenant je veux juste le centrer!

Pour tout mon test je ne reçois que la photo 1. sans aucun changement.

10
partiz

Corrigez le problème, profitez-en :)

<Android.support.v7.widget.Toolbar
    Android:id="@+id/toolbar"
    Android:layout_width="match_parent"
    Android:layout_height="?attr/actionBarSize"
    Android:elevation="4dp"
    Android:background="?attr/colorPrimary">
    <!-- Code for your Left Button -->
    <ImageView
        Android:id="@+id/yourId"
        Android:src="@mipmap/yourLeftIcon"
        Android:layout_width="wrap_content"
        Android:layout_height="fill_parent"
        Android:layout_marginLeft="20dp"
        Android:layout_marginRight="20dp"
        Android:layout_marginTop="4dp"
        Android:layout_marginBottom="4dp"
        Android:layout_gravity="left" />
        <!-- Here is the main code for your Middle Buttons -->
        <LinearLayout
            Android:layout_width="wrap_content"
            Android:layout_height="match_parent"
            Android:orientation="horizontal"
            Android:layout_gravity="center"
            Android:gravity="center">
            <Button
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:background="@drawable/ic_launcher"
                Android:id="@+id/button1"/>
            <Button
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:background="@drawable/ic_launcher"
                Android:id="@+id/button2"/>
            <Button
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:background="@drawable/ic_launcher"
                Android:id="@+id/button3"/>
            <Button
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:background="@drawable/ic_launcher"
                Android:id="@+id/button4" />
        </LinearLayout>
    <!-- Code for your Right Button -->
    <ImageView
        Android:id="@+id/yourId"
        Android:src="@mipmap/yourRightIcon"
        Android:layout_width="wrap_content"
        Android:layout_height="fill_parent"
        Android:layout_marginLeft="20dp"
        Android:layout_marginRight="20dp"
        Android:layout_marginTop="4dp"
        Android:layout_marginBottom="4dp"
        Android:layout_gravity="right" />
</Android.support.v7.widget.Toolbar>
4
asadnwfp

La barre d'outils est comme n'importe quelle autre vue. Vous pouvez y ajouter directement des enfants et y accéder ensuite comme vous le feriez pour une vue normale.

Ce n’est pas la réponse exacte à votre question, mais elle vous indiquera la voie à suivre.

<?xml version="1.0" encoding="utf-8"?>
<Android.support.v7.widget.Toolbar   xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:layout_gravity="center"
    Android:background="@Android:color/holo_red_light"
    Android:elevation="2dp"
    Android:theme="@style/Base.ThemeOverlay.AppCompat.Dark">

    <LinearLayout
        Android:layout_width="match_parent"
        Android:layout_height="match_parent">

        <Button
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:background="@drawable/ic_launcher"
            Android:id="@+id/button1"/>

        <Button
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:background="@drawable/ic_launcher"
            Android:id="@+id/button2"/>

        <Button
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:background="@drawable/ic_launcher"
            Android:id="@+id/button3"/>

        <Button
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:background="@drawable/ic_launcher"
            Android:id="@+id/button4" />

    </LinearLayout>

</Android.support.v7.widget.Toolbar>

Ensuite, dans votre fragment principal ou ailleurs, vous pouvez accéder à quelque chose comme ceci.

    Toolbar mToolbar = (Toolbar) root.findViewById(R.id.tool_bar);

    Button button1 = (Button) mToolbar.findViewById(R.id.button1);
    Button button2 = (Button) mToolbar.findViewById(R.id.button2);
    Button button3 = (Button) mToolbar.findViewById(R.id.button3);
    Button button4 = (Button) mToolbar.findViewById(R.id.button4);

Vous pouvez utiliser cette méthode pour créer une barre d'outils personnalisée comme bon vous semble. Vous voudrez probablement utiliser une mise en page relative.

2
Eoin

vous pouvez le faire par programme comme suit:

mToolbar.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            ImageView imageView = (ImageView)mToolbar.findViewById(R.id.logo);
            if( mToolbar == null ){
                return;
            }
            int toolbarWidth = mToolbar.getWidth();
            int imageWidth = imageView.getWidth();
            imageView.setX((toolbarWidth-imageWidth)/2);
        }
    });

personnalisez votre layout_toolbar.xml:

    <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"
            style="@style/Toolbar"
            Android:layout_width="match_parent"
            Android:layout_height="@dimen/toolbar_height"                                                                   
            Android:background="@drawable/toolbar_background"
            Android:focusable="false"                                
            app:titleTextAppearance="@style/AppTheme.Toolbar.Title">
            <ImageView
                Android:id="@+id/logo"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:src="@drawable/toolbar_logo"/>

    </Android.support.v7.widget.Toolbar>
0
User9527

Je sais que cette solution est terrible, mais pour moi cela fonctionne.

Tout d'abord, dans LinearLayout, vous pouvez placer 3 barres d'outils au lieu de 1:

<LinearLayout
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:orientation="horizontal">

    <Android.support.v7.widget.Toolbar Android:id="@+id/bottomToolbarLeft"
        Android:layout_width="0dp"
        Android:layout_height="?attr/actionBarSize"
        Android:layout_weight="1.0"
        Android:background="?attr/colorPrimary"
        app:popupTheme="@style/AppTheme.PopupOverlay"/>

    <Android.support.v7.widget.Toolbar Android:id="@+id/bottomToolbarCenter"
        Android:layout_width="wrap_content"
        Android:layout_height="?attr/actionBarSize"
        Android:background="?attr/colorPrimary"
        app:popupTheme="@style/AppTheme.PopupOverlay"/>

    <Android.support.v7.widget.Toolbar Android:id="@+id/bottomToolbarRight"
        Android:layout_width="0dp"
        Android:layout_height="?attr/actionBarSize"
        Android:layout_weight="1.0"
        Android:background="?attr/colorPrimary"
        app:popupTheme="@style/AppTheme.PopupOverlay"/>

</LinearLayout>

Chaque barre d’outils doit avoir sa propre ressource de menu.

Ensuite, vous obtiendrez quelque chose comme ça: Les icônes sont centrées, mais l’icône de gauche n’est pas alignée sur la bordure de gauche }

Enfin, pour aligner l’icône de gauche, vous pouvez simplement définir ce paramètre pour la barre d’outils de gauche:

Android:layoutDirection="rtl"

Le résultat est: L'ordre souhaité

0
LevshinN

Peut-être vous aider:

<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent">

    <Android.support.design.widget.AppBarLayout
        Android:id="@+id/appBar"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:theme="@style/AppTheme.AppBarOverlay">

        <Android.support.v7.widget.Toolbar
            Android:id="@+id/toolbarPath"
            Android:layout_width="match_parent"
            Android:layout_height="?attr/actionBarSize"
            Android:background="?attr/colorPrimary">

            <ImageView
                Android:id="@+id/imgBack"
                Android:layout_width="wrap_content"
                Android:layout_height="fill_parent"
                Android:layout_gravity="left"
                Android:layout_marginBottom="4dp"
                Android:layout_marginLeft="20dp"
                Android:layout_marginRight="20dp"
                Android:layout_marginTop="4dp"
                Android:src="@drawable/ic_action_back" />

            <LinearLayout
                Android:layout_width="wrap_content"
                Android:layout_height="match_parent"
                Android:layout_gravity="center"
                Android:gravity="center"
                Android:orientation="horizontal">

                <ImageView
                    Android:id="@+id/imgClear"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:layout_marginRight="15dp"
                    Android:src="@drawable/ic_action_discard" />

                <ImageView
                    Android:id="@+id/imgStop"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:layout_marginRight="15dp"
                    Android:src="@drawable/ic_action_stop" />

                <ImageView
                    Android:id="@+id/imgPath"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:layout_marginRight="15dp"
                    Android:src="@drawable/ic_action_merge" />

                <ImageView
                    Android:id="@+id/imgToggle"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:src="@drawable/ic_action_map" />
            </LinearLayout>

            <ImageView
                Android:id="@+id/imgForward"
                Android:layout_width="wrap_content"
                Android:layout_height="fill_parent"
                Android:layout_gravity="right"
                Android:layout_marginBottom="4dp"
                Android:layout_marginLeft="20dp"
                Android:layout_marginRight="20dp"
                Android:layout_marginTop="4dp"
                Android:src="@drawable/ic_action_forward" />
        </Android.support.v7.widget.Toolbar>
    </Android.support.design.widget.AppBarLayout>


    <fragment xmlns:Android="http://schemas.Android.com/apk/res/Android"
        xmlns:tools="http://schemas.Android.com/tools"
        Android:id="@+id/mapPath"
        Android:name="com.google.Android.gms.maps.SupportMapFragment"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:layout_below="@+id/appBar" />

</RelativeLayout>

Dans votre style.xml, écrivez:

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

Puis dans manifest.xml:

<application
    Android:name="com.ir.zanis.app.AppController"
    Android:allowBackup="true"
    Android:icon="@mipmap/ic_launcher"
    Android:label="@string/app_name"
    Android:supportsRtl="true"
    Android:theme="@style/AppTheme.NoActionBar"> <===See here===
      .......
      .............
       .............
0
user4813855

Vous devriez essayer d'appliquer n'importe quel alignement pour la disposition des parents.

<LinearLayout
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:gravity="center">
<Button ...any attributes.../>
...any items...
</LinerLayout>
0
Kaloglu