我正在尝试使用Visual Studio 2017在Xamarin中创建导航抽屉。 我在谷歌的一些研究后创建了导航抽屉。但是当我尝试从菜单中打开活动时,导航抽屉就会消失。
我希望将导航抽屉放在我的所有活动中,而不是在所有活动中重复。
链接到我的项目:https://github.com/Chindara/XamarinAndroidNavigationDrawer
答案 0 :(得分:3)
点击菜单项时,您应该导航到Fragment而不是Activity
,Framework
也可以显示用户界面。如果您这样做,当您选择Fragment
时,navigation drawer
将始终位于Activitiy
,例如this。以下是关于如何在Fragment
中使用Xamarin
的{{3}}。
选择菜单项时:
navigationView.NavigationItemSelected += (sender, e) =>
{
e.MenuItem.SetChecked(true);
FragmentTransaction ft = this.FragmentManager.BeginTransaction();
if (e.MenuItem.ItemId == Resource.Id.nav_MGrade)
{
MGradeFragment mg = new MGradeFragment();
// The fragment will have the ID of Resource.Id.fragment_container.
ft.Replace(Resource.Id.ll, mg);
}
else if(e.MenuItem.ItemId == Resource.Id.home)
{
//...
}
//...
// Commit the transaction.
ft.Commit();
drawerLayout.CloseDrawers();
};
MGradeFragment.class
,与您的MGradeActivity
做了同样的事情:
public class MGradeFragment : Fragment
{
public override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
// Create your fragment here
}
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
// Use this to return your custom view for this Fragment
// return inflater.Inflate(Resource.Layout.YourFragment, container, false);
View view = LayoutInflater.From(Activity).Inflate(Resource.Layout.MGradesView, null);
return view;
}
}
MGradeFragment
将替换Main.axml中的LinearLayout
:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:id="@+id/ll"
>
<include
layout="@layout/toolbar" />
</LinearLayout>
在您的toolbar.axml
中,修改您的代码:
<android.support.design.widget.CoordinatorLayout
....
android:id="@+id/main_content"
android:layout_width="match_parent"
android:layout_height="wrap_content">//Change match_parent to wrap_content