过去,Google始终显示工具栏以使其标题与左侧对齐:
https://material.io/develop/android/components/app-bar-layout/
但是,最近看来,即使在其某些应用程序中,标题居中,即使左右两侧没有对称内容。示例在“消息”应用程序上:
在此处也对材料指南进行了更新。例:
有些人喜欢将其称为“材料设计2.0”,因为它对各种事物进行了更新。
自从它被称为“ ActionBar”(在此处为示例)以来,在StackOverflow上存在很多类似的问题,但这里有所不同,因为它应该具有支持库(又名“ Android-X”)来正确处理它,因为情况已经改变,现在Google应该支持它,因为它是指南的一部分,也是各种Android应用程序的一部分。
我试图在工具栏中添加视图,但是即使通过给视图上色,您也可以看到它并没有自动居中,而是在添加更多操作项或向上按钮之前:
activity_main.xml
<androidx.coordinatorlayout.widget.CoordinatorLayout
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"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<com.google.android.material.appbar.AppBarLayout
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:theme="@style/AppTheme.AppBarOverlay">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay">
<TextView android:layout_width="match_parent" android:layout_height="match_parent" android:text="title"
android:gravity="center" android:background="#33ff0000"
android:id="@+id/titleTextView"/>
</androidx.appcompat.widget.Toolbar>
</com.google.android.material.appbar.AppBarLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)
此解决方案与在其他与该问题类似的其他StackOverflow线程上介绍的其他解决方案相似,并且就像在此处一样,它无法真正使文本居中,而在Google的尝试下,无论操作项和其他视图的数量如何,它都能正确居中周围。
我还想出了一个更好的解决方法:在每一侧都有一个工具栏,并使TextView的余量是两者的最大值。甚至还有一个库,“ Toolbar-Center-Title ” ...但是,这也是一种解决方法。不是我要问的。
现在有没有一种正式的方法可以在工具栏上居中显示标题,而不管有多少个动作项目,而又在另一面是什么(例如,向上按钮)?
如果是这样,该怎么办?
注意:同样,我对解决方法不感兴趣。有很多解决方法,我自己可以想到。
我的应用程序中有一个工具栏,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="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:background="#263355"
local:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
local:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
Run Code Online (Sandbox Code Playgroud)
我添加标题:
getSupportActionBar().setTitle(title);
Run Code Online (Sandbox Code Playgroud)
我已经阅读了Android工具栏中心标题和自定义字体
但是,如果我更改工具栏的xml,我不知道如何更改TextView的值.有人可以帮帮我吗?
我想更改工具栏文本大小和重力.我这样创建样式styles.xml:
<style name="Toolbar.TitleText" parent="TextAppearance.Widget.AppCompat.Toolbar.Title">
<item name="android:textSize">16sp</item>
<item name="android:textStyle">normal</item>
<item name="android:color">@color/colorHighlight</item>
<item name="android:gravity">center</item>
</style>
Run Code Online (Sandbox Code Playgroud)
我设置titleTextAppearance,这里的一切看起来都很完美,但它没有用.我的定制工具栏:
<?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:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="#009688"
android:titleTextAppearance="@style/Toolbar.TitleText"
android:paddingTop="0dp"
app:theme="@style/Base.ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light">
</android.support.v7.widget.Toolbar>
Run Code Online (Sandbox Code Playgroud)
我的工具栏出了什么问题?
我试图在Android中的应用栏左侧推送背面图标图像,但显示在app(工具)栏中间的图标.如何在Android中的应用栏右侧对齐图标?请看下面的图片.
<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="divine.calcify.activities.HomeScreenActivity">
<item
android:layoutDirection="ltr"
android:id="@+id/hs_back_button"
android:icon="@mipmap/ic_back"
android:title="@string/homescreen_back"
app:showAsAction="always"
></item>
<item
android:id="@+id/menu_search"
android:icon="@mipmap/ic_search"
android:title="@string/homescreen_search"
android:orderInCategory="1"
app:showAsAction="always"
app:actionViewClass="android.support.v7.widget.SearchView"/>
<item android:id="@+id/menu_notifications"
android:icon="@mipmap/ic_divine_notification"
android:title="@string/homescreen_notification"
android:orderInCategory="2"
app:showAsAction="always" />
</menu>
Run Code Online (Sandbox Code Playgroud)
我在中居中Toolbar。当我添加MenuItems时,内容会被推送,因此不会居中。我知道ActionMenuView是一个选项,但是SearchView这次不会扩展(另一个问题)。我尝试过contentInset属性,但是没有运气。
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:gravity="center"
app:layout_scrollFlags="scroll|enterAlways"
app:popupTheme="@style/AppTheme.PopupOverlay">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FF0000">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:padding="4dp"
app:srcCompat="@drawable/ic_ugurlogo_white" />
</FrameLayout>
</android.support.v7.widget.Toolbar>
Run Code Online (Sandbox Code Playgroud)
这是结果。红色的视图是FrameLayout。我要FrameLayout匹配Toolbar宽度。
我要如何实现?
我有自己的工具栏,我想为我的标题自定义字体,但我不能让它工作.
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
SpannableString title = new SpannableString(getResources().getString(R.string.app_name));
title.setSpan(Typeface.createFromAsset(getAssets(), "KeepCalm-Medium.ttf"), 0, title.length(),
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
toolbar.setTitle(title);
setSupportActionBar(toolbar);
Run Code Online (Sandbox Code Playgroud)
我想我做得对,但它没有做任何事情.
我正在尝试将“折叠的工具栏”的标题居中。但是基本布局本身似乎存在一些错误。标题由于某些原因而有偏移。无法找出解决方法。同样,似乎也没有属性将负的边距/填充应用于collapsedTitle。
<android.support.design.widget.CoordinatorLayout
android:id="@+id/coordinator_layout"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:orientation="vertical">
<android.support.design.widget.AppBarLayout
android:id="@+id/app_bar"
android:layout_width="match_parent"
android:layout_height="@dimen/app_bar_height"
android:fitsSystemWindows="true"
android:theme="@style/XXXXAppTheme.AppBarOverlay">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsingToolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
app:collapsedTitleGravity="center"
app:contentScrim="?attr/colorPrimary"
app:expandedTitleGravity="top|center_horizontal"
app:expandedTitleMarginTop="-10dp"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
app:title="REGISTER">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin"
app:popupTheme="@style/XXXXAppTheme.PopupOverlay"/>
<ImageView
android:id="@+id/ivContent"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/white_background"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
app:layout_collapseMode="parallax"/>
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
android:orientation="vertical"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<FrameLayout
android:id="@+id/flContainer"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
TopAppBar(
backgroundColor = Color.Transparent,
elevation = 0.dp,
modifier= Modifier.fillMaxWidth(),
navigationIcon = {
IconButton(
onClick = { TODO },
enabled = true,
) {
Icon(
painter = painterResource(id = R.drawable.icon_back_arrow),
contentDescription = "Back",
)
}
}
},
title = {
Text(
modifier = if (action == null) Modifier.fillMaxWidth() else Modifier,
textAlign = if (action == null) TextAlign.Center else TextAlign.Start,
maxLines = 1,
text = "Hello"
)
},
actions = {
action?.run {
Text(
modifier = Modifier
.padding(horizontal = 16.dp)
.clickable(onClick = …Run Code Online (Sandbox Code Playgroud)