android底部抽屉库,Xamarin.Android之简单的抽屉布局

0x01 前言

相信对于用过Android版QQ的,应该都不会陌生它那个向右滑动的菜单(虽说我用的是Lumia)

今天就用Xamarin.Android实现个比较简单的抽屉布局。下面直接进正题。

0x02 做个简单的抽屉布局

新建个android项目

通过NuGet安装个Xamarin.Android.Support.v4

%E5%A4%96%E9%93%BE%E7%BD%91%E5%9D%80%E5%B7%B2%E5%B1%8F%E8%94%BD

其实呢,官网那里还用很多组件可用拿来尝试一下的。

然后修改Main.axml

1 <?xml version="1.0" encoding="utf-8"?>

2

3 android:layout_width="match_parent"

4 android:layout_height="match_parent">

5

7 android:layout_width="match_parent"

8 android:layout_height="match_parent">

9

11 android:layout_width="match_parent"

12 android:layout_height="match_parent" />

13

15 android:layout_width="200dp"

16 android:layout_height="match_parent"

17 android:layout_gravity="start"

18 android:background="@android:color/holo_blue_light"

19 android:choiceMode="singleChoice"

20 android:divider="@android:color/transparent"

21 android:dividerHeight="0dp" />

22

23

这里用了相对布局,更重要的是android.support.v4.widget.DrawerLayout

同时新建一个fragmentcontent.axml,用于呈现选中菜单的内容。

1 <?xml version="1.0" encoding="utf-8"?>

2

3 android:orientation="vertical"

4 android:layout_width="match_parent"

5 android:layout_height="match_parent">

6

8 android:layout_height="match_parent"

9 android:gravity="center"

10 android:textAlignment="center"

11 android:textSize="30dp"

12 android:id="@+id/txtName" />

13

内容比较简单,就是显示相应菜单的文本。

然后,修改MainActivity

1 usingAndroid.App;2 usingAndroid.OS;3 usingAndroid.Support.V4.Widget;4 usingAndroid.Widget;5 namespaceDrawerLayoutDemo6 {7 [Activity(Label = "DrawerLayoutDemo", MainLauncher = true, Icon = "@drawable/icon")]8 public classMainActivity : Activity9 {10 private string[] _menu;11 protected override voidOnCreate(Bundle bundle)12 {13 base.OnCreate(bundle);14

15 SetContentView(Resource.Layout.Main);16 //the menu

17 _menu = new string[] { "C#", "Python", "Xamarin"};18 //listview

19 var listView = FindViewById(Resource.Id.left_drawer);20 //adapter

21 listView.Adapter = new ArrayAdapter(this, Android.Resource.Layout.SimpleListItem1, _menu);22 //drawerlayout

23 var drawerLayout = FindViewById(Resource.Id.mDrawerLayout);24 //click event

25 listView.ItemClick +=ItemClick;26 }27 ///

28 ///item click event of the listview29 ///

30 ///

31 ///

32 private void ItemClick(objectsender, AdapterView.ItemClickEventArgs e)33 {34 //fragment

35 Fragment fragment = newFragmentContent(_menu[e.Position]);36 //show

37 var fm =FragmentManager.BeginTransaction().Replace(Resource.Id.content_frame, fragment).Commit();38 }39 }40 }

MainActivity的话主要是处理ListView的绑定以及点击事件。

新建一个FragmentContent

1 usingAndroid.App;2 usingAndroid.OS;3 usingAndroid.Views;4 usingAndroid.Widget;5 namespaceDrawerLayoutDemo6 {7 public classFragmentContent : Fragment8 {9 private string_text;10 public FragmentContent(stringtext)11 {12 _text =text;13 }14 public override voidOnCreate(Bundle savedInstanceState)15 {16 base.OnCreate(savedInstanceState);17 }18

19 public overrideView OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)20 {21 //get the view

22 View view = inflater.Inflate(Resource.Layout.fragmentcontent, null);23 var txt = view.FindViewById(Resource.Id.txtName);24 //set the text of the textview

25 txt.Text = "I Love" +_text;26 returnview;27 }28 }29 }

Fragment的话,就是显示把fragmentcontent.axml显示,把菜单的值显示出来。

到这里,功能是已经完成了,但是呢,是不是就能成功运行呢?

问题还是有的!!发布的时候,出现下面的问题。

1>C:\Program Files (x86)\MSBuild\Xamarin\Android\mon.targets(348,2): error XA5208: Download failed. Please download 外链网址已屏蔽 and put it to the C:\Users\Catcher\AppData\Local\Xamarin\Android.Support.v4\23.3.0.0 directory.

1>C:\Program Files (x86)\MSBuild\Xamarin\Android\mon.targets(348,2): error XA5208: Reason: One or more errors occurred.

1>C:\Program Files (x86)\MSBuild\Xamarin\Android\mon.targets(348,2): error XA5207: Please install package: 'Xamarin.Android.Support.v4' available in SDK installer. Java library file C:\Users\Catcher\AppData\Local\Xamarin\Android.Support.v4\23.3.0.0\embedded\classes.jar doesn't exist.

1>C:\Program Files (x86)\MSBuild\Xamarin\Android\mon.targets(348,2): error XA5208: Download failed. Please download 外链网址已屏蔽 and put it to the C:\Users\Catcher\AppData\Local\Xamarin\Android.Support.v4\23.3.0.0 directory.

1>C:\Program Files (x86)\MSBuild\Xamarin\Android\mon.targets(348,2): error XA5208: Reason: One or more errors occurred.

1>C:\Program Files (x86)\MSBuild\Xamarin\Android\mon.targets(348,2): error XA5207: Please install package: 'Xamarin.Android.Support.v4' available in SDK installer. Java library file C:\Users\Catcher\AppData\Local\Xamarin\Android.Support.v4\23.3.0.0\embedded\libs/internal_impl-23.3.0.jar doesn't exist.

下面给出解决方案。

0x03 出错处理方案

从错误我们能看出缺少东西了。

其实这个文件是可以直接下载的,不用FQ。但是在生成或是发布的时候下载会出错。

在C:\Users\Catcher\AppData\Local\Xamarin\zips下面(这个是下载之后所在的目录)

%E5%A4%96%E9%93%BE%E7%BD%91%E5%9D%80%E5%B7%B2%E5%B1%8F%E8%94%BD

这个zip文件一直是处于无效的状态。所以只能单独下载上面的那个文件,然后把文件放在

zips那个目录下面,同时改为这个名字,即可。

然后再生成就不会出现问题了。

同时它会在C:\Users\Catcher\AppData\Local\Xamarin\Android.Support.v4\23.3.0.0目录下生成下面两个文件夹

%E5%A4%96%E9%93%BE%E7%BD%91%E5%9D%80%E5%B7%B2%E5%B1%8F%E8%94%BD

0x04 效果图

%E5%A4%96%E9%93%BE%E7%BD%91%E5%9D%80%E5%B7%B2%E5%B1%8F%E8%94%BD

当然,这个demo简单到不行,想弄好看点的话就自己自定义listview的样式

文字旁边个图标之类的。。然后写个好看的布局。。

最后推荐马跃大哥的博客,学Xamarin.Android可以去看看

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值