如何在Android中居中&左&右对齐ActionBar图标

Posted

技术标签:

【中文标题】如何在Android中居中&左&右对齐ActionBar图标【英文标题】:How to center&left&right align the ActionBar icons in Android 【发布时间】:2015-09-16 21:07:24 【问题描述】:

您好,我想在工具栏中对齐一组图标,如下图所示。

我用谷歌搜索了一些更改后:

mainActivity.xml

...

<include
    android:id="@+id/tool_bar_bottom"
    layout="@layout/tool_bar"
    android:layout_
    android:layout_
    />
 ....

在 menu_bottom.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:orderInCategory="100"
        android:icon="@drawable/ic_action_arrow_forward"
        android:layout_alignParentRight="true"
        app:showAsAction="always"
        ></item>


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



    <item
        android:id="@+id/action_home"
        android:orderInCategory="300"
        android:title="home"
        android:icon="@drawable/ic_action_home"
        app:showAsAction="always"
        ></item>


    <item
        android:id="@+id/action_refresh"
        android:orderInCategory="400"
        android:title="refresh"
        android:icon="@drawable/ic_action_refresh"
        app:showAsAction="always"
        ></item>

    <item
        android:id="@+id/action_zoom_out"
        android:orderInCategory="500"
        android:title="zoom out"
        android:icon="@drawable/ic_action_zoom_out"
        app:showAsAction="always"
        ></item>

    <item
        android:id="@+id/action_back"
        android:orderInCategory="600"
        android:title="back"
        android:icon="@drawable/ic_action_arrow_back"
        android:layout_alignParentLeft="true"
        app:showAsAction="always"
        ></item>


</menu>

我也为左右添加了android:layout_alignParentLeft/right="true"

根据图片,我将右侧图标浮动到左侧,将右侧图标浮动到右侧。

我还想让所有其他图标浮动居中...

代码没有任何变化。

我还将android:layout_centerVertical = "true" 添加到所有其他图标...

怎样才能正确显示视图?

【问题讨论】:

看到这个答案:***.com/questions/26627612/… 另见此处:***.com/questions/31154029/… 【参考方案1】:

这个答案可能有点晚了。但是,使用当今当前的材料组件库,您可以使用底部应用栏来实现您想要的结果。见伪代码sn-p:

<androidx.coordinatorlayout.widget.CoordinatorLayout
    android:layout_
    android:layout_>

    <com.google.android.material.bottomappbar.BottomAppBar
        android:id="@+id/bottomAppBar"
        android:layout_
        android:layout_
        android:layout_gravity="bottom"
        app:backgroundTint="@color/colorBottomBar"
        app:fabAlignmentMode="center"
        app:contentInsetLeft="0dp"
        app:contentInsetStart="0dp">

        <LinearLayout
            android:layout_
            android:layout_
            android:orientation="horizontal">

            <TextView
                style="?android:attr/borderlessButtonStyle"
                android:layout_
                android:layout_
                android:layout_weight="1
                android:drawableTop="@drawable/ic_blur"
                android:gravity="center"

            </TextView>

            <TextView
                style="?android:attr/borderlessButtonStyle"
                android:layout_
                android:layout_
                android:layout_weight="1
                android:drawableTop="@drawable/ic_blur"
                android:gravity="center"

            </TextView>

            <TextView
                style="?android:attr/borderlessButtonStyle"
                android:layout_
                android:layout_
                android:layout_weight="1
                android:drawableTop="@drawable/ic_blur"
                android:gravity="center"

            </TextView>

            <TextView
                style="?android:attr/borderlessButtonStyle"
                android:layout_
                android:layout_
                android:layout_weight="1
                android:drawableTop="@drawable/ic_blur"
                android:gravity="center"

            </TextView>

            <TextView
                style="?android:attr/borderlessButtonStyle"
                android:layout_
                android:layout_
                android:layout_weight="1
                android:drawableTop="@drawable/ic_blur"
                android:gravity="center"

            </TextView>

            <TextView
                style="?android:attr/borderlessButtonStyle"
                android:layout_
                android:layout_
                android:layout_weight="1
                android:drawableTop="@drawable/ic_blur"
                android:gravity="center"

            </TextView>
        </LinearLayout>
    </com.google.android.material.bottomappbar.BottomAppBar>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

android:drawableTop="@drawable/ic_blur" 将用于表示您希望在底部应用栏中显示的图标。

您必须导入材料组件库才能使用底部应用栏

【讨论】:

以上是关于如何在Android中居中&左&右对齐ActionBar图标的主要内容,如果未能解决你的问题,请参考以下文章

在 100% 高度的 div 中居中 div(垂直和水平)(引导程序)

为啥 int foo() 是一个右值,而 int& foo() 在这个例子中是一个左值?

为啥不能使用右值来初始化左值引用?

如何让DIV层在网页中居中显示

在绝对定位的 div 中居中内容

为什么传递右值引用(X &&)是AS IF传递左值引用(X&)?