Xamarin Android中多个活动中的导航抽屉

时间:2017-06-18 02:36:22

标签: c# android visual-studio xamarin navigation-drawer

我正在尝试使用Visual Studio 2017在Xamarin中创建导航抽屉。 我在谷歌的一些研究后创建了导航抽屉。但是当我尝试从菜单中打开活动时,导航抽屉就会消失。

我希望将导航抽屉放在我的所有活动中,而不是在所有活动中重复。

链接到我的项目:https://github.com/Chindara/XamarinAndroidNavigationDrawer

1 个答案:

答案 0 :(得分:3)

点击菜单项时,您应该导航到Fragment而不是ActivityFramework也可以显示用户界面。如果您这样做,当您选择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