引き出しのレイアウトをアクションバー/ツールバーの下に配置する方法は?新しいツールバービューでv7:21アプリ互換ライブラリを使用しています。
私が見る例は次のように見えます
<Android.support.v4.widget.DrawerLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/my_drawer_layout"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<!-- drawer view -->
<LinearLayout
Android:layout_width="304dp"
Android:layout_height="match_parent"
Android:layout_gravity="left|start">
<!-- drawer content -->
</LinearLayout>
<!-- normal content view -->
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:orientation="vertical">
<!-- The toolbar -->
<Android.support.v7.widget.Toolbar
Android:id="@+id/my_awesome_toolbar"
Android:layout_height="wrap_content"
Android:layout_width="match_parent"
Android:minHeight="?attr/actionBarSize"
Android:background="?attr/colorPrimary" />
<!-- The rest of content view -->
</LinearLayout>
しかし、ツールバーは引き出しによって非表示になり、アニメーションハンバーガーアイコン(v7.ActionBarDrawerToggleなど)は引き出しの下に表示されないため役に立たなくなりますが、マテリアルテーマをよりよくサポートするために新しいツールバービューを使用したいと思います。
それを実現する方法は? DrawerLayoutを非トップレベルビューとして使用することはできますか?
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:orientation="vertical"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<!-- The toolbar -->
<Android.support.v7.widget.Toolbar
Android:id="@+id/my_awesome_toolbar"
Android:layout_height="wrap_content"
Android:layout_width="match_parent"
Android:minHeight="?attr/actionBarSize"
Android:background="?attr/colorPrimary" />
<Android.support.v4.widget.DrawerLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/my_drawer_layout"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<!-- drawer view -->
<LinearLayout
Android:layout_width="304dp"
Android:layout_height="match_parent"
Android:layout_gravity="left|start">
<!-- drawer content -->
</LinearLayout>
<!-- normal content view -->
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:orientation="vertical">
<!-- The rest of content view -->
</LinearLayout>
</Android.support.v4.widget.DrawerLayout>
</LinearLayout>
customtoolbar
を使用するときにできるとは思わない
回避策は、top_margin
を引き出しに設定することです。 (Google Playストアでも同じです!)
<!-- drawer view -->
<LinearLayout
Android:layout_marginTop="?attr/actionBarSize"
...
より良い解決策を見つけた場合も教えてください;)
私の解決策:Android Studio 2.1.2、引き出しテンプレート:
必要な変更は3つだけです。ビューNavigationView
でマージン上部を設定し、style.xmlでオーバーラップステータスバーを削除します。
<item name="Android:windowDrawsSystemBarBackgrounds">false</item>
Android:fitsSystemWindows="false"
レイアウトmain.xml set margin top get size actionbar value Android:layout_marginTop="?attr/actionBarSize"
<?xml version="1.0" encoding="utf-8"?>
<Android.support.v4.widget.DrawerLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
xmlns:tools="http://schemas.Android.com/tools"
Android:id="@+id/drawer_layout"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:fitsSystemWindows="false"
tools:openDrawer="start">
<include
layout="@layout/app_bar_main"
Android:layout_width="match_parent"
Android:layout_height="match_parent" />
<Android.support.design.widget.NavigationView
Android:id="@+id/nav_view"
Android:layout_width="wrap_content"
Android:layout_height="match_parent"
Android:layout_gravity="start"
Android:layout_marginTop="?attr/actionBarSize"
Android:fitsSystemWindows="false"
app:headerLayout="@layout/nav_header_main"
app:menu="@menu/activity_main_drawer" />
</Android.support.v4.widget.DrawerLayout>
引き出しのレイアウトスタイルを次のように変更します
RelativeLayout
----Toolbar
----DrawerLayout
---ContentView
---DrawerList
これを機能させるのに問題があり、最終的に正しく表示されました。私が使用したレイアウトは次のとおりです。
<LinearLayout...[add your namespaces, etc]
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:orientation="vertical"
Android:fitsSystemWindows="true">
<Android.support.v7.widget.Toolbar [your custom toolbar] />
<Android.support.v4.widget.DrawerLayout [your drawer layout] />
<LinearLayout>
[content here]
</LinearLayout>
<Android.support.design.widget.NavigationView />
</LinearLayout>
デザインウィジェットの移動には注意してください。間違ったルートタグの下にある場合は、
"番号
layout_gravity_left
"
例外。
より簡単なソリューションを見つけました:DrawerLayoutとNavigationView属性を設定します:
Android:fitsSystemWindows="false"
次に、marginTopをナビゲーションビューに
"?actionBarSize"
その場合、ステータスバーの背景がstyles.xml addで透明になります
<item name="Android:statusBarColor">@color/colorPrimaryDark</item>
通常の色または必要な他の色を取得する属性...