如何居中工具栏后退按钮?

时间:2015-04-27 08:35:47

标签: android material-design android-toolbar android-actionbaractivity

我在尝试将支持工具栏上的后退按钮居中时遇到问题。 我在ActionBarActivity中使用它。

declare @cmd nvarchar(max)
set @cmd = 'DECLARE @fileName NVARCHAR(256) BACKUP ... ' + dbo.UDF_Gregorian_To_Persian_WithDash(...) + ' ... '
EXEC sp_add_jobstep
    @job_name = N'Every 5 minutes log backup ',
    @step_name = N'set T-sql command',
    @subsystem = N'TSQL',
    @command=@cmd,
    @retry_attempts = 1,
    @retry_interval = 1 ;

并在活动的<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:toolbar="http://schemas.android.com/apk/res-auto" android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?attr/colorPrimary" android:minHeight="?attr/actionBarSize" toolbar:popupTheme="@style/ThemeOverlay.AppCompat.Light" toolbar:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" /> 内设置向上导航,如下所示:

onCreate()

但是,我得到的是: not centered back button screenshot 如您所见,后退按钮放错了位置

编辑: 问题似乎在于Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); getSupportActionBar().setTitle(R.string.title_activity_scanner); getSupportActionBar().setDisplayHomeAsUpEnabled(true); 的自定义值设置为40dp,但现在结果证明,这是错误放置的标题。

9 个答案:

答案 0 :(得分:77)

来自developer.android.com

  

工具栏支持比ActionBar更集中的功能集。从一开始   最后,工具栏可能包含以下可选项的组合   元素:

     

导航按钮。这可能是向上箭头,导航菜单切换,   关闭,折叠,完成或应用程序选择的另一个字形。这个   按钮应始终用于访问其他导航目的地   在工具栏的容器内及其表示的内容或   否则保留工具栏表示的当前上下文。的的   导航按钮在工具栏的最小值内垂直对齐   高度,如果设置。

因此,如果将 minHeight 属性设置为与工具栏高度相同( layout_height ),则后退箭头将垂直居中。

答案 1 :(得分:6)

如果工具栏的高度不符合标准,现在可以将后退按钮(2k20)与androidx Toolbar居中,您只需使用buttonGravity属性即可。

这允许您使用wrap_content而不是特定的高度(minHeight不允许这样做):

<androidx.appcompat.widget.Toolbar
   app:buttonGravity="center_vertical"
   android:layout_height="wrap_content"
   ... />

答案 2 :(得分:2)

Inside ActionBarActivity

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
  setSupportActionBar(toolbar);
  getSupportActionBat().setTitle("Hello World"); 
  getSupportActionBar().setDisplayHomeAsUpEnabled(true);
  getSupportActionBar().setHomeButtonEnabled(true);

布局代码:

<android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="@color/primary"
        app:theme="@style/ToolbarTheme"
        app:popupTheme="@style/Theme.AppCompat"/>

风格:

 <style name="AppTheme.Base" parent="Theme.AppCompat.Light">
    <item name="colorPrimary">@color/primary</item>
    <item name="colorPrimaryDark">@color/primaryDark</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowActionBar">false</item>
    <item name="windowActionBar">false</item>
</style>

<style name="AppTheme" parent="AppTheme.Base">

请记住,工具栏只是一个视图组,所以你可以用任何你喜欢的方式设置它。 这是图片链接:Toolbar sample

希望它有所帮助。

答案 3 :(得分:1)

实现此目的的最佳方法是从工具栏中删除常规“后退”按钮,并在XML布局中添加自定义ImageButton并将图像设置为它。您可以将此ImageButtton放在工具栏上的任何位置。

您的活动布局代码应该是这样的。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <include
        android:id="@+id/toolbar"
        layout="@layout/toolbar" />

    <ImageButton
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:id="@+id/button"
        android:src="@drawable/attach_icon"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true" />

</RelativeLayout>

答案 4 :(得分:0)

捎带@Rick Sanchez answer - 如果您知道工具栏的minHeight属性的大小,则可以使用:

android:gravity="top"
app:titleMarginTop="@dimen/margin_to_center"

在工具栏中以使文本居中。如果您使用的是android:minHeight="?actionBarSize",那么这将是大约13p

答案 5 :(得分:0)

对我来说,没有一个解决方案有效。在我的情况下,问题是我申请的保证金:

 <android.support.v7.widget.Toolbar
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     ... >

     <View
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="10dp"
        android:layout_marginTop="10dp" />

 </android.support.v7.widget.Toolbar>

直接将其应用到工具栏后,按钮垂直居中:

 <android.support.v7.widget.Toolbar
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:layout_marginBottom="10dp"
     android:layout_marginTop="10dp"
     ... >

     <View
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

 </android.support.v7.widget.Toolbar>

答案 6 :(得分:0)

@Rick Sanchez回答是工作,设置工具栏的layout_height与minHeight相同

我发现在Toolbar构造函数中有一个字段可以设置按钮重力, import datetime temp_array = numpy.array([(i - datetime.datetime(1970, 1, 1)) / datetime.timedelta(seconds=1) for i in old_array]) new_array = temp_array.astype('float')

,但v7支持工具栏无法设置, mButtonGravity = a.getInteger(R.styleable.Toolbar_buttonGravity, Gravity.TOP);

答案 7 :(得分:0)

将按钮的大小设置为56dp,并将scaleType设置为centerAppbar上没有空白 确保您的图标尺寸为24x24

答案 8 :(得分:0)

我正在使用

  <style name="MyActionBar" parent="@style/Widget.AppCompat.ActionBar">

我应该什么时候使用

 <style name="MyActionBar" parent="@style/Widget.AppCompat.Toolbar">