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 webclientprogressbar
。 TextViews
'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" />
希望这对你有用!
使用 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 webclientprogressbar
。 TextViews
'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" />
希望这对你有用!