栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 移动开发 > Android

详解Xamarin.Android 利用Fragment实现底部菜单

Android 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

详解Xamarin.Android 利用Fragment实现底部菜单

本篇文章主要介绍了详解Xamarin.Android 利用Fragment实现底部菜单,分享给大家,具体如下:

效果图:

第一步:添加引用

引用 Crosslight.Xamarin.Android.Support.v7.AppCompat 这个包。

第二步:绘制Main和Fragment界面

fg_home.axml



  

fg_label.axml



  

fg_mine.axml



  

fg_query.axml



  

Main.axml


 
  

main_left.xml



 
  
  
    
   
   

    
    
     
     
     
      
    
   
   
   
   
   
   
  
  

第三步:在value文件下创建Style,并且自定义 baseAppTheme 样式


 
  
 #1e89e7
 #1976d2
 #ff0000
 #ffffff

 
  false
  true
  @color/primary
  @color/primaryDark
  @style/AppTheme.DrawerArrowToggle
 

 
  @android:color/white
 

第四步:编写每个Fragment的后台,这里只写一个。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Util;
using Android.Views;
using Android.Widget;

namespace BottomMuneDemo.Fragments
{
  public class HomeFragment : Fragment
  {
    private string content { get; set; }
    public HomeFragment(string content)
    {
      this.content = content;
    }

    public override void onCreate(Bundle savedInstanceState)
    {
      base.onCreate(savedInstanceState);

      // Create your fragment here
    }

    public override View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
      View view = inflater.Inflate(Resource.Layout.fg_home, container, false);
      TextView txt_content = (TextView)view.FindViewById(Resource.Id.txt_content);
      txt_content.Text = "首页";

      return view;
    }
  }
}

第五步:在Main活动中进行设置。

using Android.App;
using Android.Widget;
using Android.OS;
using Android.Support.V7.App;
using BottomMuneDemo.Fragments;
using Android.Views;

namespace BottomMuneDemo
{
  [Activity(Label = "BottomMuneDemo", MainLauncher = true, Theme = "@style/baseAppTheme")]
  public class MainActivity : AppCompatActivity
  {
    private ImageView iv_home;
    private ImageView iv_query;
    private ImageView iv_label;
    private ImageView iv_mine;

    private frameLayout fy_home;
    private frameLayout fy_query;
    private frameLayout fy_label;
    private frameLayout fy_mine;

    HomeFragment fg1;
    QueryFragment fg2;
    LabelFragment fg3;
    MineFragment fg4;

    protected override void onCreate(Bundle savedInstanceState)
    {
      base.onCreate(savedInstanceState); 
      SetContentView(Resource.Layout.Main);

      fy_home = (frameLayout)FindViewById(Resource.Id.fy_home);
      fy_query = (frameLayout)FindViewById(Resource.Id.fy_query);
      fy_label = (frameLayout)FindViewById(Resource.Id.fy_label);
      fy_mine = (frameLayout)FindViewById(Resource.Id.fy_mine);

      iv_home = (ImageView)FindViewById(Resource.Id.iv_home);
      iv_query = (ImageView)FindViewById(Resource.Id.iv_query);
      iv_label = (ImageView)FindViewById(Resource.Id.iv_label);
      iv_mine = (ImageView)FindViewById(Resource.Id.iv_mine);

      bindViews();
      iv_home.PerformClick();

    }


    #region 底部菜单选项卡 

    //ui组件初始化与事件绑定
    private void bindViews()
    {

      iv_home.Click += (s, e) => { onClick(iv_home); };
      iv_query.Click += delegate { onClick(iv_query); };
      iv_label.Click += delegate { onClick(iv_label); };
      iv_mine.Click += delegate { onClick(iv_mine); };
    }
    //隐藏所有Fragment
    private void hideAllFragment(FragmentTransaction fragmentTransaction)
    {
      if (fg1 != null) fragmentTransaction.Hide(fg1);
      if (fg2 != null) fragmentTransaction.Hide(fg2);
      if (fg3 != null) fragmentTransaction.Hide(fg3);
      if (fg4 != null) fragmentTransaction.Hide(fg4);

      iv_home.SetImageResource(Resource.Drawable.icon_home1);
      iv_query.SetImageResource(Resource.Drawable.icon_query1);
      iv_label.SetImageResource(Resource.Drawable.icon_label1);
      iv_mine.SetImageResource(Resource.Drawable.icon_mine1);
    }
    //重置所有文本的选中状态
    private void setSelected()
    {
      iv_home.Selected = false;
      iv_query.Selected = false;
      iv_label.Selected = false;
      iv_mine.Selected = false;
    }
    //单击事件
    public void onClick(View v)
    {
      FragmentTransaction fTransaction = FragmentManager.BeginTransaction();
      hideAllFragment(fTransaction);
      switch (v.Id)
      {
 case Resource.Id.iv_home:
   setSelected();
   iv_home.Selected = true;
   iv_home.SetImageResource(Resource.Drawable.icon_home2);
   if (fg1 == null)
   {
     fg1 = new HomeFragment("首页");
     fTransaction.Add(Resource.Id.fy_home, fg1);
   }
   else { fTransaction.Show(fg1); }
   break;

 case Resource.Id.iv_query:
   setSelected();
   iv_query.Selected = true;
   iv_query.SetImageResource(Resource.Drawable.icon_query2);
   if (fg2 == null)
   {
     fg2 = new QueryFragment("查询");
     fTransaction.Add(Resource.Id.fy_query, fg2);
   }
   else { fTransaction.Show(fg2); }
   break;

 case Resource.Id.iv_label:
   setSelected();
   iv_label.Selected = true;
   iv_label.SetImageResource(Resource.Drawable.icon_label2);
   if (fg3 == null)
   {
     fg3 = new LabelFragment("贴签");
     fTransaction.Add(Resource.Id.fy_label, fg3);
   }
   else { fTransaction.Show(fg3); }
   break;

 case Resource.Id.iv_mine:
   setSelected();
   iv_mine.Selected = true;
   iv_mine.SetImageResource(Resource.Drawable.icon_mine2);
   if (fg4 == null)
   {
     fg4 = new MineFragment("我的");
     fTransaction.Add(Resource.Id.fy_mine, fg4);
   }
   else { fTransaction.Show(fg4); }
   break;
      }
      fTransaction.Commit();
    }
    #endregion 
  }
}

到这里就结束了,亲测代码有效,如有问题请留言。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/155014.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号