在Android支持工具栏xml

时间:2017-05-19 20:21:33

标签: android android-layout android-toolbar

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

enter image description here

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

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

2-我需要让两个" A" s或进度条很好地坐在一起,同时保持应用名称在中心

我尝试了各种布局容器,但是如果可以避免的话,我想避免硬编码像素边距,我想防止不必要的容器嵌套。

这是我的工具栏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>

任何帮助表示赞赏。感谢

2 个答案:

答案 0 :(得分:1)

而不是LinearLayout,请尝试使用RelativeLayout

1。使用RelativeLayout作为Toolbar的直接子女。

2。使用android:layout_centerInParent="true"属性toolbar_titletextview将其保持在Toolbar的中心位置。

3。使用其他RelativeLayout作为ProgressBar的容器,并将此RelativeLayoutToolbar的右侧对齐。

4. TextViews左侧的两个progress_container与最初visibleGONE对齐。

如果您要隐藏ProgressBar并显示两个TextViews,则只需将可见性GONE设置为ProgressBar webclientprogressbar即可。 TextViews'A A '会自动替换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

enter image description here

webclientprogressbar = GONE, 
toolbar_decreasefont = VISIBLE and toolbar_increasefont = VISIBLE

enter image description here

希望这会有所帮助〜

答案 1 :(得分:0)

我建议您使用此布局的解决方案是将主水平“LinearLayout”的“重力”设置为“中心”。之后,只需在“App Name”文本视图之前和之后粘贴下面给出的视图。

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

希望这对你有用!