wake-up-neo.com

so zentrieren Sie Symbole in der Symbolleiste in Android Studio

Ich stellte eine ähnliche Frage: hier ... Ich habe einige Tutorials in den Antworten. Aber diese Frage ist unterschiedlich. weil keine dieser Methoden in meinem Projekt nicht funktioniert. 

Ich möchte alle Symbole in der Symbolleiste zentrieren

Ich teste alle verfügbaren Möglichkeiten ... aber immer schweben Symbole in links.

Ich möchte Zentrierungssymbole (ich ziehe es vor, dass das linke Symbol rechts und das andere Symbol rechts und andere Symbole Mitte zentriert sind).

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

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

und für obigen Code ( main_menu.xml ) in <item> habe ich alle folgenden Codes ausprobiert:

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

Ich weiß wirklich nicht, was ich tun kann, um die Symbole auszurichten. Ich habe Stunden gegoogelt und alles Senario ausprobiert

was ist mein Fehler? für alle Tests kann ich keine Änderung sehen ... enter image description here

vorher wollte ich pic2 (im obigen Bild) Aber jetzt will ich es einfach zentrieren!

Für alle Tests bekomme ich nur Bild 1. ohne Änderung.

10
partiz

Fix für das Problem, genießen Sie :)

<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

Die Symbolleiste ist wie jede andere Ansicht. Sie können direkt untergeordnete Elemente hinzufügen und dann wie auf eine normale Ansicht zugreifen.

Dies ist nicht die genaue Antwort auf Ihre Frage, aber es wird Ihnen den Weg zeigen.

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

Dann können Sie in Ihrem Hauptfragment oder wo auch immer sonst auf so etwas zugreifen.

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

Mit dieser Methode können Sie eine benutzerdefinierte Symbolleiste auf beliebige Weise erstellen. Sie möchten wahrscheinlich ein relatives Layout verwenden.

2
Eoin

sie können dies programmgesteuert wie folgt tun:

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

passen Sie Ihre layout_toolbar.xml an:

    <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

Ich weiß, dass diese Lösung schrecklich ist, aber für mich funktioniert sie.

Erstens könnten Sie in LinearLayout 3 Symbolleisten anstelle von 1 platzieren:

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

Jede Symbolleiste sollte über eine eigene Menüressource verfügen.

Dann erhalten Sie so etwas: Die Symbole sind zentriert, das linke Symbol ist jedoch nicht am linken Rand ausgerichtet

Um das linke Symbol auszurichten, können Sie diesen Parameter einfach für die linke Symbolleiste einstellen:

Android:layoutDirection="rtl"

Das Ergebnis ist: Die gewünschte Reihenfolge

0
LevshinN

Vielleicht helfen sie:

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

In Ihrem style.xml schreiben Sie:

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

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

Sie sollten versuchen, eine Ausrichtung für das Elternlayout anzuwenden.

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