AppCompact-V21で提供されている最新のツールバーウィジェットとナビゲーションドロワーを使用して、マテリアルデザインに取り組んでいます。
私の懸念はナビゲーションドロワーアイコンをツールバーの右側に設定するにはどうすればよいですか。 Android:layout_gravity="right"
を設定することでナビゲーションドロワーを右から開くことができますが、ナビゲーションアイコンはツールバーの左側に表示されます。
古いAction Bar
を使用する場合、右側にカスタムドロワーアイコンが付いたボタン付きのカスタムアクションバーを作成し、カスタムナビゲーションドロワーアイコンをクリックすると、ドロワーを開閉できます。
ツールバーをカスタマイズして独自のナビゲーションボタンを設定するには、ツールバーに独自の画像ボタンを追加します。
_<Android.support.v7.widget.Toolbar
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/toolbar"
Android:minHeight="?attr/actionBarSize"
Android:layout_height="?attr/actionBarSize"
Android:layout_width="match_parent" >
<ImageButton
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_gravity="end"
Android:onClick="backButtonHandler"
Android:background="@drawable/ic_launcher" />
</Android.support.v7.widget.Toolbar>
_
次に、アクティビティクラスでbackButtonHandler(View v)
を定義し、必要に応じて機能を追加できます。
ActionBarDrawerToggleを左から右に移動したいのですが、appcompat21サポートライブラリを使用しています。私はこれに対する解決策を見つけていません。 Abhinav Puriが提案したように、アクションバー/ツールバーにカスタムアイテムを作成する必要があるようです。
ツールバーにカスタムビューを追加する方法がわからないとおっしゃいましたが、これがあなたやこの問題と戦っている人に役立つことを願っています。
toolbar = (Toolbar) findViewById(R.id.toolbar);
if (toolbar != null) {
setSupportActionBar(toolbar);
}
actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setHomeButtonEnabled(true);
actionBar.setDisplayShowHomeEnabled(true);
actionBar.setDisplayShowCustomEnabled(true);
ActionBar.LayoutParams layoutParams = new ActionBar.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
layoutParams.gravity = Gravity.RIGHT;
actionBar.setCustomView(
getLayoutInflater().inflate(R.layout.custom_top_bar, null),
layoutParams);
ImageButton rightToggle =(ImageButton) toolbar.findViewById(R.id.rightToggle);
rightToggle.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (mDrawerLayout.isDrawerOpen(Gravity.RIGHT)) {
mDrawerLayout.closeDrawer(Gravity.RIGHT);
} else {
mDrawerLayout.openDrawer(Gravity.RIGHT);
}
}
});
custom_top_bar.xml:
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/rightLayout"
Android:layout_width="wrap_content"
Android:layout_height="match_parent"
Android:orientation="horizontal" >
<ImageButton
Android:id="@+id/rightToggle"
Android:layout_width="?attr/actionBarSize"
Android:layout_height="?attr/actionBarSize"
Android:src="@drawable/ic_launcher" />
</LinearLayout>
それがどのように機能するかを知っていれば、それを非常に簡単に行うことができます。ほとんどのAndroidドロワーはアプリケーションのホームボタンをドロワーボタンとして使用します。このボタンの重力は変更できません。必要なのは、アクションで自分で作成した別のボタンをドロワーボタンに割り当てることだけです。バー(メニューボタン)では、onOptionsItemSelected.
でアイコンとアクションを指定します
if (item.getItemId() == Android.R.id.home) {
if(mDrawerLayout.isDrawerOpen(mLinearLayout)) {
mDrawerLayout.closeDrawer(mmLinearLayout);
}
else {
// open the drawer
}
}
これとほぼ同じコードになります。Android.R.id.homeを、上記で説明したボタンのIDで変更します。