2017-09-11 8 views
-2

私はツールバーに自分のタイトルを配置したいと思います。私は4つのケースを達成するために、タイトルは常に中央に配置する必要があります:Androidツールバーは常にアイコン付きのタイトルを中心に設定されています

[<  short  ] 
[< loooong_titleeee...] 
[  short  ] 
[  short  +] 

以下は私のカスタムツールバーのレイアウトです。 3つのケースは完全ですが、2つ目のケースではなく、カバーバックボタンです。それを解決するためにレイアウトをどのように変更する必要がありますか?私は私のレイアウトで多くのcastlingsを試してみましたが、毎回、何かが間違っている:)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

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

    <RelativeLayout 
     android:id="@+id/root_layout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <LinearLayout 
      android:id="@+id/left_buttons" 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:layout_alignParentLeft="true" 
      android:layout_marginLeft="10dp" 
      android:gravity="center"> 

      <TextView 
       android:id="@+id/left_text_button" 
       android:layout_width="wrap_content" 
       android:layout_height="match_parent" 
       android:layout_gravity="start" 
       android:gravity="center" 
       android:textColor="@android:color/holo_blue_dark" 
       android:textSize="20sp" 
       android:visibility="gone" /> 

      <ImageButton 
       android:id="@+id/back_button" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:background="@android:color/transparent" 
       android:padding="10dp" 
       android:src="@drawable/ic_arrow_back_black_24dp" 
       android:visibility="gone" /> 
     </LinearLayout> 

     <TextView 
      android:id="@+id/toolbar_title" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerInParent="true" 
      android:ellipsize="end" 
      android:maxLines="1" 
      android:textSize="20sp" 
      android:textStyle="bold" 
      android:visibility="gone" /> 

     <LinearLayout 
      android:id="@+id/right_buttons" 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:layout_alignParentRight="true" 
      android:layout_gravity="end" 
      android:layout_marginRight="10dp"> 

      <TextView 
       android:id="@+id/right_text_button" 
       android:layout_width="wrap_content" 
       android:layout_height="match_parent" 
       android:enabled="false" 
       android:gravity="center" 
       android:textSize="20sp" 
       android:textStyle="bold" 
       android:visibility="gone" /> 

      <ImageButton 
       android:id="@+id/add_button" 
       android:layout_width="wrap_content" 
       android:layout_height="match_parent" 
       android:background="@android:color/transparent" 
       android:paddingBottom="15dp" 
       android:paddingLeft="15dp" 
       android:paddingTop="15dp" 
       android:src="@drawable/ic_add_black_36dp" 
       android:tint="@android:color/holo_blue_dark" 
       android:visibility="gone" /> 
     </LinearLayout> 

     <View 
      android:layout_width="match_parent" 
      android:layout_height="1dp" 
      android:layout_alignParentBottom="true" 
      android:background="@color/iosDarkGray" /> 
    </RelativeLayout> 
</android.support.v7.widget.Toolbar> 

+0

。詳細はこちらをご覧ください。 http://www.journaldev.com/9952/android-custom-action-bar-example-tutorial – Stallion

答えて

0

変更次のようにタイトルのTextViewの:次のように

<TextView 
    android:id="@+id/toolbar_title" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerInParent="true" 
    android:ellipsize="end" 
    android:maxLines="1" 
    android:textSize="20sp" 
    android:textStyle="bold" 
    android:visibility="gone" 
    android:layout_toEndOf="@id/left_buttons" 
    android:layout_toStartOf="@+id/right_buttons" /> 

そしてrightButtonsレイアウト:

<LinearLayout 
    android:id="@id/right_buttons" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:layout_alignParentRight="true" 
    android:layout_gravity="end" 
    android:layout_marginRight="10dp"> 
+0

2番目のタイトルを除くすべてのケースで機能しません(タイトルが長い)。 – DennyDog

+0

なぜ、うまくいかないのですか?タイトル: –

+0

のtextViewに 'android:layout_gravity =" center "&&アンドロイド:gravity =" center "'を追加してください。android:layout_gravity = "center"はRelativeLayoutでは使用できません。アンドロイド:gravity = "center"で動作していますが、右または左の目に見えるボタンがタイトルを左または右に押すため、タイトルが正しく中央揃えされていません。そしてそれは詰め物のようです。 – DennyDog

0

< < <しかし、2番目のoそれはカバーバックボタンです。

したがって、あなたは長いタイトルをアンドロイド:id = "@ + id/left_text_button" < - このTextviewに入れています。戻るボタンはアンドロイド:id = "@ + id/back_button"です。

このリニアーレイアウトでは、 - > android:id = "@ + id/left_buttons"に 'orientation = horizo​​ntal'プロパティを入れてみてください。

私はこれがあなたを助けてくれることを願っています。

編集:

さて、何をやっていることは非常に複雑です。この解決策を試してください あなたのすべての場合、戻るボタン、タイトルと右の追加ボタンがあります。したがって

戻るボタンの場合は、Androidのバックエアロウを使用します。独自のカスタムツールバーを設定

setSupportActionBar(toolbar); 
getSupportActionBar().setDisplayShowTitleEnabled(false); 

Drawable aerrow= ContextCompat.getDrawable(this,R.drawable.ic_back); 
getSupportActionBar().setHomeAsUpIndicator(aerrow); 
getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

とあなたのxml、::

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:background="#e2b5b5" 
     android:contentInsetEnd="0dp" 
     android:contentInsetLeft="0dp" 
     android:contentInsetRight="0dp" 
     android:contentInsetStart="0dp" 
     app:contentInsetEnd="0dp" 
     app:contentInsetLeft="0dp" 
     app:contentInsetRight="0dp" 
     app:contentInsetStart="0dp"> 

     <RelativeLayout 
      android:id="@+id/root_layout" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 

      <TextView 
       android:id="@+id/toolbar_title" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_centerInParent="true" 
       android:ellipsize="end" 
       android:maxLines="1" 
       android:textSize="20sp" 
       android:textStyle="bold" 
       android:visibility="visible" /> 

       <ImageButton 
        android:id="@+id/add_button" 
        android:layout_width="wrap_content" 
        android:layout_height="match_parent" 
        android:background="@android:color/transparent" 
        android:paddingBottom="15dp" 
        android:paddingLeft="15dp" 
        android:paddingTop="15dp" 
        android:layout_alignParentRight="true" 
        android:layout_gravity="end" 
        android:layout_marginRight="10dp" 
        android:tint="@android:color/holo_blue_dark" 
        android:visibility="visible" /> 

      <View 
       android:layout_width="match_parent" 
       android:layout_height="1dp" 
       android:layout_alignParentBottom="true" 
       android:background="#000000" /> 
     </RelativeLayout> 


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


</LinearLayout> 
+0

私はこれを試した - それは私の最初のケースでは動作していない。タイトルはback_buttonの右になります。私はそれがレイアウトと解決するための出口なしの状況だと思うし、私はそれを今すぐ残して、私はやった。 – DennyDog

+0

@DennyDog、私の編集した答えを見てください。私はそれが助けて欲しい – zephyr

関連する問題