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

8 浏览
0 Comments

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

背景

过去,谷歌一直将工具栏的标题靠左对齐显示:https://material.io/develop/android/components/app-bar-layout/。然而,最近,在一些应用程序中,即使左右内容不对称,标题也居中显示。示例在“Messages”应用上:enter image description here以及在“Google News”应用上:enter image description here它还在材料指南中进行了更新:此处。示例:enter image description here一些人称之为“材料设计2.0”,因为它有各种更新。

问题

虽然在StackOverflow上有很多类似的问题,但这里不同,因为支持库(即“Android-X”)应该有一种正确处理的方法,因为情况已经发生了变化,现在谷歌应该支持它,因为它是指南的一部分以及各种Android应用的一部分。

我的尝试

我尝试在工具栏中添加一个视图,但即使给视图添加颜色,也可以看到它实际上并不居中,而且在添加更多操作项或上按钮之前:enter image description here

activity_main.xml


    
        
            
        
    

这个解决方案与其他类似问题的StackOverflow线程中的许多其他解决方案类似,就像那里一样,它无法真正居中文本,而在谷歌的尝试中,无论有多少操作项和其他视图,它都能正确居中。

我还想到了一个更好的解决方法:在每一侧都有一个工具栏,并使TextView的边距是两者的最大值。甚至有一个名为“Toolbar-Center-Title”的库...但这仍然是一个变通方法,不是我所询问的。

问题

是否有一种官方方式可以使标题在工具栏上居中,无论有多少操作项,无论另一侧有什么(例如上按钮)?

如果有的话,如何做到?

注意:再次强调,我对变通方法不感兴趣。有很多变通方法,我可以自己想到。

0
0 Comments

在新的材料设计中,像流行的Android应用程序一样,Toolbar上是否有官方的居中标题API?这个问题的出现的原因是因为没有官方的方法可以直接在Toolbar上居中标题。尽管可以使用RelativeLayout来实现,但是当AppCompatTextView的layout_width设置为match_parent时,可以通过设置textAlignment属性为center来实现标题的居中。然而,这种方法也有一些问题,当显示多个菜单项作为操作按钮或者显示过长的标题字符串时,标题可能会重叠。因此,这个方法并不是官方的,而且并不总是可以正常工作。

解决方法可能是根据屏幕大小和布局方向使用不同的menu.xml,或者使用app:showAsAction属性来控制菜单项的显示方式。然而,这些方法都不是特别优化的,因为当标题由于空间不足而以"..."结尾时,可能会导致标题居中显示不理想。另外,使用app:showAsAction属性是控制重叠效果的唯一方法。

,没有官方的API可以直接在Toolbar上居中标题。虽然可以通过一些方法实现,但是并不总是可靠的。因此,如果想要实现居中标题,可能需要采用一些额外的工作方法。

0
0 Comments

如何在新的Material Design中创建一个居中标题的工具栏?

0
0 Comments

TL;DR: 目前没有官方的方法来在工具栏上居中标题。可行的解决方法是使用Flutter框架或者通过在工具栏上方添加一个TextView来实现。也可以向Material Components Android Issue Tracker发送功能请求。

目前似乎没有官方的方法来实现在工具栏上居中标题,至少目前还没有。但是我知道Flutter框架支持这个功能,而且实现起来非常简单:只需要在appbar构造函数中传递centerTitle: true,具体描述可以参考这个回答。而且你提到的应用程序很有可能是使用Flutter构建的,因为它们都来自于Google。

我认为最接近你期望布局的解决方法是将TextView放在工具栏上方,可以参考这个示例代码:


    
        
        
        
    

但是如果官方Android API能够像Flutter一样支持这个功能就太好了。也许你可以向Material Components Android Issue Tracker发送一个功能请求?

你提到的代码与我找到的其他解决方法类似。但是在某些情况下可能无法正常工作,因为它可能会重叠。如果我想要一个解决方法,我会在两侧都有一个工具栏,并使TextView的margin是两者之间的最大值。但是我对解决方法不感兴趣。我已经更新了问题。

看起来你是对的。目前没有官方的方法来实现这个功能。解决方法并不重要,因为它们可能都不起作用。甚至还有一个专门针对这个问题的库:github.com/RaviKoradiya/Toolbar-Center-Title。不确定它的效果如何。我在问题跟踪器中找到了这个:issuetracker.google.com/issues/123303613

我昨天在Twitter上发布了这个问题,Toolbar的开发者Chris Banes也提到了叠加。希望问题跟踪器上的功能请求能够成为实际的功能。

0