我正在使用 Xamarin.Android 开发应用程序,该应用程序在API 23(Android 6.0)之前正常运行:
这是我的 OnCreate 事件:
protected override void OnCreate(Bundle bundle)
{
SetTheme(Resource.Style.MyCustomThemeCompat);
base.OnCreate(bundle);
base.SetActionBar(FindViewById<Toolbar>(Resource.Id.toolbarMain));
ActionBar.Title = Title;
ActionBar.SetHomeAsUpIndicator(Resource.Drawable.ic_menu_white_24dp);
ActionBar.SetDisplayHomeAsUpEnabled(true);
}
这是我的事件 OnOptionsItemSelected ,自从API 24+(Android 7 +)以来从未调用过:
public override bool OnOptionsItemSelected(IMenuItem item)
{
switch (item.ItemId)
{
case Android.Resource.Id.Home:
if (MDrawerLayout.IsDrawerOpen(GravityCompat.Start))
{
MDrawerLayout.CloseDrawers();
}
else
{
MDrawerLayout.OpenDrawer(GravityCompat.Start);
}
return true;
default:
return false;
}
}
我的自定义风格:
<?xml version="1.0" encoding="UTF-8" ?>
<resources>
<style name="MyCustomThemeCompat" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowNoTitle">true</item>
<item name="android:windowActionBar">false</item>
<item name="android:colorPrimary">#01579B</item>
<item name="android:colorPrimaryDark">#01579B</item>
<item name="android:colorButtonNormal">#0277BD</item>
<item name="android:textColorHint">#FAFAFA</item>
<item name="android:textColor">#BDBDBD</item>
<item name="android:textColorPrimary">#FFFFFF</item>
<item name="android:windowBackground">#424242</item>
<item name="android:elevation">4dp</item>
</style>
</resources>
我还没有找到任何关于我在代码中应该做的更改的示例或解释。大多数例子使用一些菜单,但我不需要任何菜单。此外,我正在使用 AppCompatActivity 和工具栏。
现在,我只有一个汉堡菜单才能显示NavigationDrawer。
工具栏:
导航抽屉已打开:
这里是完整代码的一个小例子:
https://github.com/FANMixco/NavigationDrawerError
以前有人经历过吗?谢谢你的建议。
答案 0 :(得分:2)
首先,将您的toolbarMain.xml
从Android.Widget.Toolbar
修改为Support.V7.Widget.Toolbar
:
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toolbarMain"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?android:attr/actionBarSize"
android:background="?android:attr/colorPrimary"/>
其次,在MainActivity
:
//base.SetActionBar(FindViewById<Toolbar>(Resource.Id.toolbarMain));
//ActionBar.Title = "Típicos Salvadoreños";
//ActionBar.SetHomeAsUpIndicator(Resource.Drawable.ic_menu_white_24dp);
//ActionBar.SetDisplayHomeAsUpEnabled(true);
MDrawerLayout = FindViewById<DrawerLayout>(Resource.Id.drawer_layout);
var mToolbar = FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbarMain);
SetSupportActionBar(mToolbar);
SupportActionBar.SetDisplayHomeAsUpEnabled(true);
SupportActionBar.SetHomeAsUpIndicator(Resource.Drawable.ic_menu_white_24dp);
SupportActionBar.Title = "Típicos Salvadoreños";
然后,当您单击汉堡菜单时,将调用OnOptionsItemSelected
。
您可以阅读ActionBarDrawerToggle文档,注意那里的两个构造函数。 Toolbar
类型为android.support.v7.widget.Toolbar