相关疑难解决方法(0)

在新的材质设计中,是否像流行的Android应用程序一样,在工具栏上有居中标题的官方API?

背景

过去,Google始终显示工具栏以使其标题与左侧对齐:

https://material.io/develop/android/components/app-bar-layout/

但是,最近看来,即使在其某些应用程序中,标题居中,即使左右两侧没有对称内容。示例在“消息”应用程序上

在此处输入图片说明

“ Google新闻”应用上

在此处输入图片说明

此处也对材料指南进行了更新。例:

在此处输入图片说明

有些人喜欢将其称为“材料设计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 ” ...但是,这也是一种解决方法。不是我要问的。

问题

现在有没有一种正式的方法可以在工具栏上居中显示标题,而不管有多少个动作项目,而又在另一面是什么(例如,向上按钮)?

如果是这样,该怎么办?

注意:同样,我对解决方法不感兴趣。有很多解决方法,我自己可以想到。

android material-design android-toolbar

11
推荐指数
1
解决办法
661
查看次数

Android - 中心工具栏的标题

我的应用程序中有一个工具栏,如下所示:

<?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的值.有人可以帮帮我吗?

java android toolbar title

9
推荐指数
1
解决办法
2万
查看次数

为什么我不能更改工具栏文本化?

我想更改工具栏文本大小和重力.我这样创建样式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 android-toolbar

6
推荐指数
1
解决办法
3893
查看次数

如何在android中的应用栏左侧对齐图标

我试图在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)

在此输入图像描述

android appbar android-toolbar

6
推荐指数
1
解决办法
4281
查看次数

即使菜单项如何在工具栏中心对齐内容

我在中居中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宽度。

工具列

我要如何实现?

android android-toolbar

5
推荐指数
0
解决办法
634
查看次数

android中工具栏上的自定义字体

我有自己的工具栏,我想为我的标题自定义字体,但我不能让它工作.

            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)

我想我做得对,但它没有做任何事情.

android android-toolbar

4
推荐指数
1
解决办法
7934
查看次数

如何在工具栏中心获取标题

我正在尝试将“折叠的工具栏”的标题居中。但是基本布局本身似乎存在一些错误。标题由于某些原因而有偏移。无法找出解决方法。同样,似乎也没有属性将负的边距/填充应用于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)

收合工具列

android android-toolbar android-collapsingtoolbarlayout

2
推荐指数
1
解决办法
5442
查看次数

如何在 TopAppBar 的布局中心对齐标题?

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)

android android-jetpack android-jetpack-compose

1
推荐指数
3
解决办法
487
查看次数