2016-08-06 11 views
1

私は引き出しのレイアウトとフラグメントの使い方が初めてです。ツールバーが画面全体を塗りつぶす

私はDrawerLayoutでアクティビティを作成するときにtutorialを使用しました。 getActionBar()にヌルポインタを渡したので、a toolbarをアクティビティメインに追加し、代わりにgetSupportActionBar()を使用しました。

これで、タイトルが画面の中央にあり、ツールバーの背景も画面全体に表示されるため、ツールバーが画面全体を埋めるように見えます。ここではXMLコードは次のとおりです。

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <!-- Toolbar --> 
    <android.support.v7.widget.Toolbar 
     android:id="@+id/my_toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:background="?attr/colorPrimary" 
     android:elevation="4dp" 
     android:theme="@style/ThemeOverlay.AppCompat.ActionBar" 
     app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> 
    <!-- The main content view --> 
    <FrameLayout 
     android:id="@+id/content_frame" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="#FFFFFF" /> 
    <!-- The navigation drawer --> 
    <ListView 
     android:id="@+id/left_drawer" 
     android:layout_width="240dp" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     android:background="#FFFFFF" 
     android:choiceMode="singleChoice" 
     android:divider="@android:color/transparent" 
     android:dividerHeight="0dp" /> 
</android.support.v4.widget.DrawerLayout> 

私は56dpとlayout_heightを交換しようとしたと私はそれのツールバーを持つ別々のレイアウトファイルを作ってみましたし、このXMLにそれを含めるましたが、それは動作しませんでした。

なぜ私のツールバーは画面全体を満たしていますか?

+0

本?:アンドロイドの価値は何である:layout_height = "?のattr/actionBarSize" – Booger

+0

56dpです。私がそれを削除して、間違ってlayout_height = "56dp"しても、まだフルスクリーンです。 – Janneman96

+0

テーマの属性をheight属性の前に移動します(おそらくそこに高さが設定されています)。 – Booger

答えて

1

DrawerLayoutはそれに2つのビューを期待しています。あなたは3を提供します。

最初のビューは「背景」です。あなたの画面の内容です。 2番目のビューであるドロワーは、アニメーションの出入りを想定しています。

あなたは3つのビューを提供しています。したがって、あなたのツールバーは "コンテンツ" —であり、あなたの引き出しはあなたの実際のコンテンツです。このような何かを試してみてください、あなたの問題を解決するには

<DrawerLayout> 

    <!-- The main content view --> 
    <LinearLayout> 
    <Toolbar/> 
    <FrameLayout 
     android:id="@+id/content_frame"/> 
    </LinearLayout> 

    <!-- The navigation drawer --> 
    <ListView/> 
</DrawerLayout> 
+0

また、アンドロイドスタジオのプレビューにバグがあります。それは私にはタイトルとそれの下に自分のツールバーだけのツールバーを示しています。私はツールバーを赤色にして、それがどこにあるのかを明確にしています:http://imgur.com/a/qmc4G – Janneman96

+0

これはバグではありませんが、あなたのレイアウトにテーマが使用されています。プレビューで使用されるテーマをデフォルトのものに変更することができます –

+0

私はそれを見つけましたhttp://stackoverflow.com/questions/32909364/why-does-android-studio-always-show-actionbar-in-app-design -even-when-disabled – Janneman96

1

DrawerLayoutは2つの子ビューしか受け入れません。ツールバーをフレームレイアウトに追加してみてください。 またはあなたのように作成することができます。

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 
    <!-- The ActionBar --> 
    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:background="?attr/colorPrimary" 
     android:fitsSystemWindows="true" 
     app:layout_scrollFlags="scroll|enterAlways" /> 
    <!-- The main content view --> 
    <FrameLayout 
     android:id="@+id/flContent" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 
</LinearLayout> 

<android.support.design.widget.NavigationView 
    android:id="@+id/navigation_view" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:layout_gravity="start" 
    android:background="@android:color/white" 
    app:headerLayout="@layout/layout_drawer_header" 
    app:itemTextColor="#000000" 
    app:menu="@menu/global"> 
</android.support.design.widget.NavigationView> 

関連する問題