私は自分のアプリで以下を設定しようとしています:
ここの手順に従いました: http://Android-developers.blogspot.com/2014/10/appcompat-v21-material-design-for-pre.html
ただし、テーマで.NoActionBarを宣言し、ツールバーをレイアウトに配置した後、私のツールバーは表示されません。最終的に私が得るのは、アクションバーなし、アクションバーなしを宣言するときに期待するものです。レイアウトは次のとおりです。
<Android.support.v4.widget.DrawerLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:id="@+id/drawer_layout"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:orientation="vertical"
tools:context=".MainActivity">
<!-- Toolbar -->
<include layout="@layout/toolbar"/>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:id="@+id/layout_main"
Android:layout_width="match_parent"
Android:layout_height="fill_parent"
Android:orientation="vertical">
<Spinner
Android:id="@+id/spinner_main"
Android:visibility="gone"
Android:textAlignment="center"
Android:gravity="center"
Android:layout_gravity="center_horizontal"
Android:entries="@array/error_loading_content_array"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"/>
<FrameLayout
Android:id="@+id/container"
Android:layout_weight="1"
Android:layout_width="match_parent"
Android:layout_height="0px"></FrameLayout>
</LinearLayout>
<fragment
Android:id="@+id/navigation_drawer"
Android:layout_width="@dimen/navigation_drawer_width"
Android:layout_height="match_parent"
Android:layout_gravity="start"
Android:name=".NavigationDrawerFragment"
tools:layout="@layout/fragment_navigation_drawer"/>
Toolbar.xml:
<Android.support.v7.widget.Toolbar
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:id="@+id/toolbar"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
Android:minHeight="?attr/actionBarSize"
Android:background="?attr/colorPrimary"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"/>
MainActivity.Javaの場合:
// Load view/layout
setContentView(R.layout.guidelib_activity_main);
// TODO: Toolbar not showing
mToolbar = (Toolbar)findViewById(R.id.toolbar);
setSupportActionBar(mToolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
ソリューション
<LinearLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:id="@+id/linearlayout_root_main"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<Android.support.v4.widget.DrawerLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:id="@+id/drawer_layout"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
tools:context=".MainActivity">
<LinearLayout
Android:id="@+id/layout_main"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:orientation="vertical">
<!-- Toolbar -->
<!-- Moved up to new LinearLayout root tag -->
<!--<include layout="@layout/toolbar"/>-->
...
DrawerLayoutはFrameLayoutを拡張しますが、それをLinearLayoutのように扱っています。タグと次のLinearLayoutを別のLinearLayoutでラップするか、タグを移動できます。
また、「fill_parent」は廃止され、「match_parent」にマッピングされるため、「match_parent」のみを使用する必要があります。 LinearLayout要素内の追加のxmlns属性を削除することもできます。
<Android.support.v4.widget.DrawerLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:id="@+id/drawer_layout"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
tools:context=".MainActivity">
<LinearLayout
Android:id="@+id/layout_main"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:orientation="vertical">
<!-- Toolbar -->
<include layout="@layout/toolbar"/>
...
ツールバーがLinearLayoutの背後に隠れている(zオーダー)ため、元のレイアウトは機能しませんでした。