2015-11-12 173 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>