我一直在使用AppCompact-V21中提供的最新工具栏小工具和导航抽屉进行材料设计。
我关注的是如何将导航抽屉图标设置为工具栏的右侧。
虽然我可以通过设置android:layout_gravity="right"
从右侧打开导航抽屉,但导航图标仍然显示在工具栏的左侧。
使用旧Action Bar
时,我可以创建自定义操作栏,右侧带有自定义抽屉图标按钮,单击自定义导航抽屉图标可打开/关闭抽屉。
答案 0 :(得分:9)
好吧,要自定义工具栏并设置自己的导航按钮,可以将自己的图像按钮添加到工具栏中:
<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)
,并根据需要添加功能。
答案 1 :(得分:3)
我想从左到右移动ActionBarDrawerToggle,我正在使用appcompat 21支持库。 我还没有找到解决方案。似乎我们需要在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);
}
}
});
&#13;
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>
&#13;
答案 2 :(得分:2)
如果你知道它是如何工作的,你可以很容易地做到这一点。
大多数Android抽屉使用应用程序的主页按钮作为抽屉按钮,此按钮的重力无法更改,
您所要做的就是在操作栏(菜单按钮)中为自己创建的另一个按钮指定抽屉按钮,在onOptionsItemSelected.
if (item.getItemId() == android.R.id.home) {
if(mDrawerLayout.isDrawerOpen(mLinearLayout)) {
mDrawerLayout.closeDrawer(mmLinearLayout);
}
else {
// open the drawer
}
}
你将拥有与此相同的代码,通过上面讨论过的按钮更改android.R.id.home。