0

ナビゲーションドロワー付きのアプリケーションでツールバーを実装しようとしています。今では、すべてのフラグメントに対してツールバーのタイトルを集中させようとしています。私の問題は、時にはナビゲーション・ドロワーからハンバーガー・アイコンの右にアイコンがあり、ツールバーの左側にアプリ・アイコンがあることです。これらの余分なアイコンを表示するには、相対レイアウトを使用する必要があります。それ以外の場合は、左のアプリアイコンが表示されません。センターツールバーアイコンとナビゲーションドロワーのトグルボタン付きのカスタムツールバーのタイトル

ツールバーと私の活動の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を表示させる方法は誰にも分かりますか?

ありがとうございます。私のツールバーのタイトルが、現時点ではセンタリングされていない

EDIT

ToolBar title doesn't center

は、私はすでに相対的なレイアウトがなくなってしまう場合は、それを中心とcenter_horizo​​ntalするのTextViewのレイアウト重力を設定することが可能であることを読んだが、これは動作しません:この質問のように配置されています私のためには、アプリケーションの私のImageViewは、ツールバーの右側に表示されません。

答えて

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> 
0

コメントするには十分な評判がありません。

あなたの質問は私には少し不明です。私が正しく理解していれば、あなたはすでにタイトルの中心を管理していますが、imageViewsの可視性をなくすとタイトルはもはや中央に置かれません。

正しく理解されていれば、imageViewsの可視性をなくして非表示に設定しようとしましたか?これを行うと、imageViewはレイアウト内の同じ領域を占有しますが、ユーザーには表示されません。

+0

を私は質問を編集し、ちょっと私のタイトルが配置されている方法を示して別の質問へのリンクを追加しました。それは中心のちょっと右です。 – Distra

+0

FrameLayoutを代わりに使ってみましたか?たぶん、それはあなたがそれが働いていたが右のイメージが消えたと述べたアプローチを使用して必要なコントロールを与えるでしょう。 –

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" /> 
+0

このコードを追加すると、相対レイアウトがツールバー全体(前にはなかったもの)と一致し、タイトルはプレビューの中央に表示されますが、アプリケーションには表示されません。 – Distra

+0

あなたはアプリの変更を見たことがないという意味ですか? –

関連する問題