android 中的对齐视图支持工具栏 xml

Aligning views in android support Toolbar xml

使用 android 支持 Toolbar,我正在尝试实现此布局。

基本上,我显示了一个进度条,与工具栏右侧对齐,加载完成后消失,取而代之的是两个 "A"s。

1- 我可以根据需要隐藏进度条并在加载完成时显示两个 "A"

2- 我需要让两个 "A" 或进度条很好地对齐,同时将应用程序名称保持在中间

我尝试过各种布局容器,但如果可以避免,我想避免对像素边距进行硬编码,并且我想防止不必要的容器嵌套。

这是我的工具栏 xml。 左箭头不是布局的一部分,它来自这里:

getSupportActionBar().setDisplayShowTitleEnabled(false);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);

XML(这不是我用来截屏的 xml,缺少布局重力,但无论如何它都不起作用)

<?xml version="1.0" encoding="utf-8"?>
<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"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="?attr/actionBarSize"
    android:theme="@style/ToolBarTheme"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
    android:gravity="center_vertical"
    android:background="@color/toolbar_color">


    <LinearLayout
        android:id="@+id/toolbar_fontsizewrapper"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center_horizontal">

        <TextView
            android:id="@+id/toolbar_titletextview"
            style="@style/ToolBarText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="My APP NAME" />

        <TextView
            android:id="@+id/toolbar_decreasefont"
            style="@style/ToolBarText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="10dp"
            android:text="A"
            android:textSize="18dp"
            android:visibility="gone" />

        <TextView
            android:id="@+id/toolbar_increasefont"
            style="@style/ToolBarText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="A"
            android:textSize="24dp"
            android:visibility="gone" />

        <ProgressBar
            android:id="@+id/webclientprogressbar"
            android:layout_width="25dp"
            android:layout_height="25dp"
            android:visibility="visible" />
    </LinearLayout>


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

感谢任何帮助。谢谢

尝试使用 RelativeLayout 而不是 LinearLayout

1. 使用 RelativeLayout 作为 Toolbar.

的直接子代

2. 对你的 toolbar_titletextview 使用属性 android:layout_centerInParent="true" 使其保持在 Toolbar.

的中心位置

3.使用另一个RelativeLayout作为ProgressBar的容器并将这个RelativeLayout对齐到Toolbar的右边.

4. 将两个 TextViews 对齐到 progress_container 的左侧,初始状态为 visible GONE.

如果要隐藏 ProgressBar 并显示两个 TextViews,则只需将可见性设置为 ProgressBar webclientprogressbarTextViews 'AA' 会自动替换 Progressbar.

的位置

这是工作代码:

<?xml version="1.0" encoding="utf-8"?>
<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"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="?attr/actionBarSize"
    android:theme="@style/ToolBarTheme"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
    android:gravity="center_vertical"
    android:background="@color/colorPrimary">

    <RelativeLayout
        android:id="@+id/toolbar_fontsizewrapper"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:id="@+id/toolbar_titletextview"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="@android:color/white"
            android:textSize="18sp"
            android:text="My APP NAME"
            android:layout_centerInParent="true"/>

        <RelativeLayout
            android:id="@+id/progress_container"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:layout_marginRight="16dp">

            <ProgressBar
                android:id="@+id/webclientprogressbar"
                android:layout_width="25dp"
                android:layout_height="25dp"
                android:visibility="visible" />

        </RelativeLayout>

        <TextView
            android:id="@+id/toolbar_increasefont"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toLeftOf="@id/progress_container"
            android:text="A"
            android:textSize="24sp"
            android:textColor="@android:color/white"
            android:visibility="gone" />

        <TextView
            android:id="@+id/toolbar_decreasefont"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toLeftOf="@id/toolbar_increasefont"
            android:layout_alignBottom="@id/toolbar_increasefont"
            android:layout_marginRight="10dp"
            android:paddingBottom="1.5dp"
            android:text="A"
            android:textSize="18sp"
            android:textColor="@android:color/white"
            android:visibility="gone" />
    </RelativeLayout>
</android.support.v7.widget.Toolbar>

输出:

webclientprogressbar = VISIBLE, 
toolbar_decreasefont = GONE and toolbar_increasefont = GONE

webclientprogressbar = GONE, 
toolbar_decreasefont = VISIBLE and toolbar_increasefont = VISIBLE

希望对你有所帮助~

对于此布局,我建议您的解决方案是将主水平 "LinearLayout" 的 "gravity" 设置为 "center"。之后,只需在 "App Name" 文本视图之前和之后粘贴下面给出的视图。

<view
    android:layout_width="0dp"
    android:layout_height="1dp"
    android:layout_weight="1" />

希望这对你有用!