如何使用Xamarin.Android创建汉堡面板/侧抽屉? (5.0 +)

时间:2017-07-25 22:19:34

标签: c# android .net xamarin xamarin.android

我的目标是Android 5.0版,最小设置为4.4。我想创建一个简单的侧边菜单,用户可以使用该菜单选择应用程序的选项/页面。

我面临的问题是在各种博客,论坛和文档页面上推荐的解决方案数量。其中许多需要下载各种组件和附加库,以及支持库以实现向后兼容。

如果我不需要向后兼容性,并且只想制作一个带有丑陋的新Material Design的Android应用程序,我可以使用哪种方法?

是否有内置组件?或者正在下载这些库并为他们做大量的设置我有最好的选择吗?

1 个答案:

答案 0 :(得分:1)

  

是否有内置组件?或者正在下载这些库并为他们做大量的设置我有最好的选择吗?

DrawerLayout的{​​{3}}实际上是获得可滑动汉堡包面板的官方推荐方式。但正如您所说,要使用它,需要安装Material Design(Android支持设计库)。

如果您不想使用它。实际上有一种方法可以直接使用Fragment来实现侧抽屉。例如:

在您的活动布局中:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
  <LinearLayout
                android:id="@+id/sidedrawer"
                android:orientation="vertical"
                android:layout_height="match_parent"
                android:layout_width="wrap_content"
                android:background="@drawable/drawerborder">
    <Button android:id="@+id/home"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:text="HOME" />
    <Button android:id="@+id/settings"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:text="SETTINGS" />
  </LinearLayout>
  <FrameLayout android:id="@+id/container"
               android:layout_height="match_parent"
               android:layout_width="wrap_content" />
</LinearLayout>

代码背后:

protected override void OnCreate(Bundle savedInstanceState)
{
    base.OnCreate(savedInstanceState);

    // Create your application here
    SetContentView(Resource.Layout.layout1);

    Button home = FindViewById<Button>(Resource.Id.home);
    home.Click += (sender, e) =>
    {
        FragmentTransaction transaction = this.FragmentManager.BeginTransaction();
        HomeFragment homefragment = new HomeFragment();
        transaction.Replace(Resource.Id.container, homefragment).Commit();
    };

    Button settings = FindViewById<Button>(Resource.Id.settings);
    settings.Click += (sender, e) =>
    {
        FragmentTransaction transaction = this.FragmentManager.BeginTransaction();
        SettingsFragment settingsfragment = new SettingsFragment();
        transaction.Replace(Resource.Id.container, settingsfragment).Commit();
    };
}

我没有向sidedrawer添加手势和动画以使其可以滑动。你可以自己尝试一下。

但我不能告诉哪种方式更容易,在我看来,安装这些软件包会更方便。要使用我上面提到的方法,许多工作需要由我们自己完成。例如,滑入/滑出动画,手势识别,甚至是抽屉的边框。所以是的,我个人认为下载这些库是最好的选择。

编辑: 我忘了说,如果你想要一个弹出式侧抽屉,你可以尝试使用自定义对话框。