使用android支持Toolbar
,我正在尝试实现此布局。
基本上,我显示了一个进度条,与工具栏右侧对齐,在加载完成后消失,取而代之的是两个" 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>
任何帮助表示赞赏。感谢
答案 0 :(得分:1)
而不是LinearLayout
,请尝试使用RelativeLayout
。
1。使用RelativeLayout
作为Toolbar
的直接子女。
2。使用android:layout_centerInParent="true"
属性toolbar_titletextview
将其保持在Toolbar
的中心位置。
3。使用其他RelativeLayout
作为ProgressBar
的容器,并将此RelativeLayout
与Toolbar
的右侧对齐。
4. 将TextViews
左侧的两个progress_container
与最初visible
州GONE
对齐。
如果您要隐藏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
webclientprogressbar = GONE,
toolbar_decreasefont = VISIBLE and toolbar_increasefont = VISIBLE
希望这会有所帮助〜
答案 1 :(得分:0)
我建议您使用此布局的解决方案是将主水平“LinearLayout”的“重力”设置为“中心”。之后,只需在“App Name”文本视图之前和之后粘贴下面给出的视图。
<view
android:layout_width="0dp"
android:layout_height="1dp"
android:layout_weight="1" />
希望这对你有用!