带有图标和导航抽屉切换按钮的自定义工具栏中的中心工具栏标题
Center Toolbar Title in custom toolbar with icons and navigation drawer toggle button
我正在尝试在带有导航抽屉的应用程序中实现工具栏。现在我正在尝试将所有片段的工具栏标题居中。我的问题是,我有时在导航抽屉的汉堡包图标右侧有一个图标,在工具栏的左侧有一个应用程序图标。为了使这些额外的图标可见,我必须使用相对布局,否则左侧的应用程序图标将丢失。
我的 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 仍然显示在我的工具栏中?
提前致谢。
编辑
我的工具栏标题目前没有居中。它的位置就像这个问题:
我已经读到,如果相对布局消失并将 TextView 的布局重力设置为 center_horizontal,则可以将其居中,但这对我不起作用,因为我的App的ImageView不会出现在工具栏右侧
我没有足够的声誉来发表评论。
你的问题我有点不清楚。如果我没理解错的话,你已经设法让标题居中了,但是当你将 imageViews 的可见性设置为 gone 时,标题就不再居中了?
如果理解正确,您是否尝试过将 imageView 的可见性设置为不可见而不是消失?这样做时,imageView 仍将在布局中占据相同的 space,但用户将不可见。
为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" />
我现在这样解决了:
<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>
我正在尝试在带有导航抽屉的应用程序中实现工具栏。现在我正在尝试将所有片段的工具栏标题居中。我的问题是,我有时在导航抽屉的汉堡包图标右侧有一个图标,在工具栏的左侧有一个应用程序图标。为了使这些额外的图标可见,我必须使用相对布局,否则左侧的应用程序图标将丢失。
我的 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 仍然显示在我的工具栏中?
提前致谢。
编辑
我的工具栏标题目前没有居中。它的位置就像这个问题:
我已经读到,如果相对布局消失并将 TextView 的布局重力设置为 center_horizontal,则可以将其居中,但这对我不起作用,因为我的App的ImageView不会出现在工具栏右侧
我没有足够的声誉来发表评论。
你的问题我有点不清楚。如果我没理解错的话,你已经设法让标题居中了,但是当你将 imageViews 的可见性设置为 gone 时,标题就不再居中了?
如果理解正确,您是否尝试过将 imageView 的可见性设置为不可见而不是消失?这样做时,imageView 仍将在布局中占据相同的 space,但用户将不可见。
为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" />
我现在这样解决了:
<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>