2015-11-12 169 views
9

我目前有一個帶有標題的工具欄的導航抽屜,我希望將此標題置於工具欄中,但工具欄似乎沒有考慮抽屜圖標,如您所見下面的圖片。Android中心標題與導航抽屜

Off centre

而當我在這張照片使用不在抽屜式導航欄的標題完全居中內的其他活動相同的工具欄佈局,如顯示:

enter image description here

那麼如何我是否會考慮這個圖標?

這裏是我的佈局:

<android.support.design.widget.AppBarLayout 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_height="wrap_content" 
    android:layout_width="match_parent" 
    android:theme="@style/Theme.App.AppBarOverlay"> 

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

     <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"> 

      <TextView 
       android:id="@+id/toolbar_title" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_centerInParent="true" 
       android:textColor="@color/white" 
       android:textStyle="bold" 
       android:text="Title" 
       android:textSize="16sp" /> 

     </RelativeLayout> 

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

</android.support.design.widget.AppBarLayout> 

回答

19

你要明白,工具欄插件擴展ViewGroup類,它有它自己的LayoutParams

所以你不需要在工具欄裏面使用RelativeLayout,而只需要在TextView中添加單行。

android:layout_gravity="center_horizontal" 

而且最終的XML應該是這樣的,

<android.support.design.widget.AppBarLayout xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:theme="@style/Theme.App.AppBarOverlay" > 

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

    <TextView 
     android:id="@+id/toolbar_title" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_horizontal" 
     android:text="Title" 
     android:textColor="@color/white" 
     android:textSize="16sp" 
     android:textStyle="bold" /> 
</android.support.v7.widget.Toolbar> 

+1

謝謝@Chitrang你讓我的日子 –

+0

我需要在工具欄裏顯示imageview和TextView,我該怎麼做 –

2

您需要更改android:layout_width="wrap_content"在TextView中android:layout_width="match_parent" .....

+0

所有這樣做是拉伸文本視圖工具欄的寬度,這正如我已經強調不佔的圖標,因此它仍然是偏離中心 –

+0

match_parent和其重心(未layout_gravity)設置爲中心也 –

+0

@NguyễnHoàiNam再次這並不能解決它被抵消的問題,因爲整個佈局沒有考慮到抽屜按鈕的寬度。 –

4

取出RelativeLayout,然後改變你的TextView這樣的:

<android.support.design.widget.AppBarLayout 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_height="wrap_content" 
    android:layout_width="match_parent" 
    android:theme="@style/Theme.App.AppBarOverlay"> 

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

     <TextView 
      android:id="@+id/toolbar_title" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:text="Title" 
      android:textColor="@color/white" 
      android:textSize="16sp" 
      android:textStyle="bold"/> 

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

</android.support.design.widget.AppBarLayout> 

該呼叫setDisplayShowTitleEnabled後,以刪除原始標題,在onCreate您的活動的方法:

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
     getSupportActionBar().setDisplayShowTitleEnabled(false); 

     ... 
    } 
} 

這是得到的結果:

enter image description here

+0

這個答案保存我的時間,謝謝@Mattia –

0

希望這會有所幫助。嘗試使用此代碼到你的XML,你的代碼一些變化:

enter image description here

<TextView 
     android:id="@+id/toolbar_title" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_horizontal" 
     android:text="title" 
     android:gravity="center" 
     android:textColor="#ffffff" 
     android:textSize="21dp" 
     android:textStyle="bold" 
     android:paddingRight="30dp" 
     android:paddingLeft="10dp" 
     android:paddingTop="15dp" /> 

使用此每項活動。 這將確保您的文本將覆蓋圖標旁邊的整個空間,並將文本置於其中。

<android.support.v7.widget.Toolbar android:id="@+id/toolbar" 
    android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" 
    android:background="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay" /> 
<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/imageView" 
     android:paddingTop="15dp" 
     android:src="@drawable/ic_keyboard_arrow_left_black_24dp" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" /> 

    <TextView 
     android:id="@+id/toolbar_title" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_horizontal" 
     android:text="title" 
     android:gravity="center" 
     android:textColor="#ffffff" 
     android:textSize="21dp" 
     android:textStyle="bold" 
     android:paddingRight="30dp" 
     android:paddingLeft="10dp" 
     android:paddingTop="15dp" /> 

</RelativeLayout> 

--------Nav_Drawer layout 

    <?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" android:layout_height="@dimen/nav_header_height" 
     android:background="@drawable/side_nav_bar" 
     android:paddingBottom="@dimen/activity_vertical_margin" 
     android:paddingLeft="@dimen/activity_horizontal_margin" 
     android:paddingRight="@dimen/activity_horizontal_margin" 
     android:paddingTop="@dimen/activity_vertical_margin" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark" android:orientation="vertical" 
     android:gravity="bottom"> 

     <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" 
      android:paddingTop="@dimen/nav_header_vertical_spacing" 
      android:src="@android:drawable/sym_def_app_icon" android:id="@+id/imageView" /> 

     <TextView android:layout_width="match_parent" android:layout_height="wrap_content" 
      android:paddingTop="@dimen/nav_header_vertical_spacing" android:text="Android Studio" 
      android:textAppearance="@style/TextAppearance.AppCompat.Body1" /> 

     <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" 
      android:text="[email protected]" android:id="@+id/textView" /> 

    </LinearLayout>