自定义工具栏中的中心工具栏标题,带有图标和导航抽屉切换按钮

时间:2017-09-04 11:48:24

标签: android android-fragments navigation-drawer android-toolbar

我试图在带导航抽屉的应用中实现工具栏。现在,我试图将所有片段的工具栏标题集中在一起。我的问题是,我有时在导航抽屉的汉堡图标右侧有一个图标,我在工具栏的左侧有一个应用程序图标。为了使这些额外的图标可见,我必须使用相对布局,否则左侧的应用程序图标将丢失。

使用工具栏的我的Activity的XML如下所示:

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
tools:context="app.activities.HomeActivity">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <android.support.v7.widget.Toolbar
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:id="@+id/home_toolbar"
        android:minHeight="?attr/actionBarSize"
        android:background="@color/white"
        app:contentInsetStartWithNavigation="0dp">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">

            <ImageView
                android:id="@+id/search_toolbar_icon"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:paddingLeft="8dp"
                android:paddingRight="8dp"
                android:layout_alignParentLeft="true"
                android:layout_alignParentStart="true"
                android:layout_centerVertical="true"
                android:src="@drawable/icon_search_hightlighted" />

            <ImageView
                android:id="@+id/refresh_toolbar_icon"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:paddingLeft="8dp"
                android:paddingRight="8dp"
                android:layout_alignParentLeft="true"
                android:layout_alignParentStart="true"
                android:layout_centerVertical="true"
                android:src="@drawable/icon_refresh"
                android:visibility="gone"/>

            <TextView
                android:id="@+id/actionbar_title"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_centerInParent="true"
                android:text="@string/action_bar_title_home"
                android:gravity="center"
                android:textColor="@color/black"
                android:textSize="18sp" />

            <ImageView
                android:id="@+id/logo"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerVertical="true"
                android:scaleType="centerCrop"
                android:layout_alignParentRight="true"
                android:src="@drawable/app_logo" />

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


<FrameLayout
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>
</LinearLayout>

<fragment
    android:id="@+id/navigation_drawer"
    android:name="app.fragments.NavigationDrawerFragment"
    android:layout_width="@dimen/navigation_drawer_width"
    android:layout_marginTop="?attr/actionBarSize"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    tools:layout="@layout/fragment_navigation_drawer" />

</android.support.v4.widget.DrawerLayout>

我根据所选片段将左侧工具栏图标的可见性设置为已消失或可见。 有谁知道如何将工具栏标题居中并且我的工具栏中仍然可以看到我的ImageView?

提前致谢。

修改

我的工具栏标题目前不在中心。它的定位如下: ToolBar title doesn't center

我已经读过,如果相对布局消失并将TextView的布局重力设置为center_horizo​​ntal,则可以将其居中,但这对我不起作用,因为我的ImageView应用程序不会出现在工具栏的右侧。

3 个答案:

答案 0 :(得分:0)

我没有足够的声誉发表评论。

我的问题有点不清楚。如果我理解正确,你已经设法使标题居中,但当你设置imageViews&#39;能见度消失,标题不再居中?

如果能正确理解,您是否尝试过设置imageViews&#39;能见度隐形而不是消失?执行此操作时,imageView仍将占用布局中的相同空间,但用户无法看到。

答案 1 :(得分:0)

toolbar尝试以下属性。

<android.support.v7.widget.Toolbar
    xmlns:app="schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/primaryColor"
    android:contentInsetLeft="0dp"
    android:contentInsetStart="0dp"
    app:contentInsetLeft="0dp"
    app:contentInsetStart="0dp"
    android:contentInsetRight="0dp"
    android:contentInsetEnd="0dp"
    app:contentInsetRight="0dp"
    app:contentInsetEnd="0dp" />

答案 2 :(得分:0)

我现在解决了这个问题:

<android.support.v7.widget.Toolbar
    android:id="@+id/home_toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:layout_gravity="center"
    android:background="@color/white"
    app:contentInsetEnd="0dp"
    app:contentInsetLeft="0dp"
    app:contentInsetRight="0dp"
    app:contentInsetStart="0dp"
    app:contentInsetStartWithNavigation="0dp">

    <ImageView
        android:id="@+id/search_toolbar_icon"
        android:layout_width="36dp"
        android:layout_height="36dp"
        android:src="@drawable/icon_search_hightlighted" />

    <TextView
        android:id="@+id/actionbar_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="@string/action_bar_title_home"
        android:textColor="@color/black"
        android:textSize="18sp" />

    <ImageView
        android:id="@+id/logo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="end"
        android:adjustViewBounds="true"
        android:scaleType="centerCrop"
        android:src="@drawable/nav_icon"
        android:layout_marginEnd="10dp"
        android:layout_marginRight="10dp" />

    <ImageView
        android:id="@+id/refresh_toolbar_icon"
        android:layout_width="36dp"
        android:layout_height="36dp"
        android:padding="8dp"
        android:src="@drawable/icon_refresh"
        android:visibility="gone"
        tools:visibility="visible" />

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