10

Ho posto una domanda simile here ... Ho ricevuto alcuni tutorial nelle risposte. Ma questa domanda è difficile. perché nessuno di questi metodi non funziona nel mio progetto.come centrare le icone nella barra degli strumenti in Android Studio

voglio centrare tutte le icone nella barra degli strumenti

provo tutti i modi availabe ... ma sempre le icone sono galleggianti in sinistra.

voglio icone di centraggio (io preferisco lasciato icona galleggia a sinistra e l'icona a destra galleggia a destra e altre icone galleggia centro)

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

Anche in 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" /> 

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

e per codice di cui sopra (main_menu.xml) in <item> Ho provato tutti questi codici:

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

io davvero non so che cosa posso fare per allineare le icone. Ho fatto ore su google e ho provato tutto il senario

qual è il mio errore? per tutte le prove non riesco a vedere alcun cambiamento ... enter image description here

prima ho voluto pic2 (in foto sopra), ma ora voglio solo centrarlo!

Per il mio test completo ricevo solo la foto 1. senza modifiche.

+0

In realtà non si stanno allineando tutti gli elementi del centro. uno è a sinistra e uno è allineato a destra e 4 sono allineati al centro. Quindi il mio suggerimento è invece di usare il menu all'interno di 'Toolbar' usa' RelativeLayout'. –

+0

perché non utilizzare layout personalizzato invece barra degli strumenti? –

risposta

2

La barra degli strumenti è come qualsiasi altra vista. Puoi aggiungere i bambini direttamente e accedere poi come faresti per una vista normale.

Questa non è esattamente la risposta alla tua domanda, ma ti dirà la strada da percorrere.

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

Quindi nel tuo frammento principale o dove mai è possibile accedere a qualcosa di simile.

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

È possibile utilizzare questo metodo per creare una barra degli strumenti personalizzata in qualsiasi modo. Probabilmente vorrai usare un layout relativo.

0

Dovresti provare ad applicare qualsiasi allineamento per il layout dei genitori.

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

L'ho fatto per tutti i genitori ... nessun cambiamento ... Tutte le icone rimangono ancora a sinistra. – partiz

+0

Potrebbe essere conflitto un altro bambino o allineamento genitore. Dacci il tuo layout xml – Kaloglu

0

Lo so, questa soluzione è terribile, ma per me funziona.

In primo luogo, in LinearLayout è possibile inserire 3 Barre degli strumenti, invece di 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> 

Ogni barra degli strumenti dovrebbe avere `s risorsa propria menu.

Poi, si otterrà qualcosa di simile:

Infine, per allineare icona di sinistra si può semplicemente impostare questo parametro per barra degli strumenti di sinistra:

android:layoutDirection="rtl" 

Il risultato è: The desired order

5

Risolto il problema, buon divertimento :)

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

Ho ottenuto un risultato migliore (a) eliminando tutti i margini (b) avendo un'icona fissa altezza e larghezza e (c) aggiungendo 'android: layout_weight =" 1 "' a 'LinearLayout' per i pulsanti centrali in modo da riempire lo spazio centrale rimanente e centrare meglio. – SharpC

0

si può fare a livello di codice come segue:

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

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

Forse ti aiuti:

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

Nel vostro style.xml scrittura:

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

Poi nel 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=== 
     ....... 
     ............. 
     .............