使用tabbedpage时将安卓端导航放在底部,官网也有说明方法.总结:

xmlns="http://xamarin.com/schemas/2014/forms"

xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"

xmlns:local="clr-namespace:aya"

x:Class="aya.MainPage"

xmlns:android="clr-namespace:Xamarin.Forms.PlatformConfiguration.AndroidSpecific;assembly=Xamarin.Forms.Core"

android:TabbedPage.ToolbarPlacement="Bottom"

android:TabbedPage.IsSwipePagingEnabled="false"

android:TabbedPage.IsSmoothScrollEnabled="false" >

其中重点在这两句

xmlns:android="clr-namespace:Xamarin.Forms.PlatformConfiguration.AndroidSpecific;assembly=Xamarin.Forms.Core"

android:TabbedPage.ToolbarPlacement="Bottom"

要去掉底部切换tab时的shift mode特效,以下提供一种方法供参考

在安卓项目中,新建一个TabbedpageRenderer,重写OnElementChange方法:

using Android.Content;

using Android.Support.Design.Internal;

using Android.Views;

using aya.Droid.Renderer;

using Xamarin.Forms;

using Xamarin.Forms.Platform.Android;

using Xamarin.Forms.Platform.Android.AppCompat;

[assembly: ExportRenderer(typeof(TabbedPage), typeof(BottomNavTabPageRenderer))]

namespace aya.Droid.Renderer

{

public class BottomNavTabPageRenderer : TabbedPageRenderer

{

public BottomNavTabPageRenderer(Context context) : base(context){}

protected override void OnElementChanged(ElementChangedEventArgs e)

{

base.OnElementChanged(e);

if (ViewGroup != null && ViewGroup.ChildCount > 0)

{

BottomNavigationMenuView bottomNavigationMenuView = FindChildOfType(ViewGroup);

if (bottomNavigationMenuView != null)

{

var shiftMode = bottomNavigationMenuView.Class.GetDeclaredField("mShiftingMode");

shiftMode.Accessible = true;

shiftMode.SetBoolean(bottomNavigationMenuView, false);

shiftMode.Accessible = false;

shiftMode.Dispose();

for (var i = 0; i < bottomNavigationMenuView.ChildCount; i++)

{

if (!(bottomNavigationMenuView.GetChildAt(i) is BottomNavigationItemView item)) continue;

item.SetShiftingMode(false);

item.SetChecked(item.ItemData.IsChecked);

}

if (bottomNavigationMenuView.ChildCount > 0) bottomNavigationMenuView.UpdateMenuView();

}

}

T FindChildOfType(ViewGroup viewGroup) where T : Android.Views.View

{

if (viewGroup == null || viewGroup.ChildCount == 0) return null;

for (var i = 0; i < viewGroup.ChildCount; i++)

{

var child = viewGroup.GetChildAt(i);

if (child is T typedChild) return typedChild;

if (!(child is ViewGroup)) continue;

var result = FindChildOfType(child as ViewGroup);

if (result != null) return result;

}

return null;

}

}

}

}

xamarin android 标签,安卓端Tabbedpage调整在底部位置和标签及取消Android API28 以下的点击特效—-xamarin.forms学习笔记(一)...相关推荐

  1. android标签机,安卓端标签机设置

    安卓端标签机设置 安卓端连接USB标签机 准备工作:首先连接好标签机电源线,查看指示灯是否正常,标签纸是否安装正确,确定标签机本身没有问题,完成准备工作.(安卓机先不要连接标签机的usb线) 注:标签 ...

  2. android 仿qq聊天背景,Android,_安卓实现类似QQ刚换聊天背景的功能,Android - phpStudy...

    安卓实现类似QQ刚换聊天背景的功能 自己实现了一下,但对于一些手机一设置背景就出现闪退不知道为什么,大体思路就是获得用户选择的uri,然后如果屏幕分辨率小于图片的分辨率就对图片进行下处理,防止OOM. ...

  3. Xamarin.forms 学习笔记

    Xamarin.Forms 是一个开放源代码 UI 框架. 通过 Xamarin.Forms,开发人员可从单个共享基本代码生成 Xamarin.Android.Xamarin.iOS 和 Window ...

  4. android 点击edittext全选,学习笔记--EditText点击全选效果

    需要上,EditText是有内容的,用户点击后就全选,最终达到方便编辑的效果. 方案一: 百度了一下,原来的思路是通过点击事件实现,但是效果很差,有时间点击中间能全选,有时候只是选中光标而已.估计是第 ...

  5. 【Android】安卓四大组件之Activity(一)

    [Android]安卓四大组件之Activity(一) 前言 Activity是Android学习中的一个重要组件,想要对其进行系统的了解可以分为几块内容,这一大章节的内容是有关于activity之间 ...

  6. Sencha学习笔记2:打包您的第一个Sencha安卓应用apk安装包

    通过上一篇翻译的官方文章的介绍我们对sencha有了初步的印象,同时我们也通过该向导生成了第一个示例应用代码框架,那么下一步可能很多人都觉得应该根据该向导所提示的去看一下一个应用是如何建立起来的详细信 ...

  7. 微信小程序android错误,app安卓端 跳转到微信小程序失败

    详细问题描述 (DCloud产品不会有明显的bug,所以你遇到的问题大都是在特定环境下才能重现的问题,请仔细描述你的环境和重现方式,否则DCloud很难排查解决你的问题) [内容] app安卓端跳转到 ...

  8. android 打印小票格式,安卓端小票机设置

    安卓收银机外接USB小票机 准备工作:首先连接好打印机电源线,查看指示灯是否正常,小票纸是否安装正确,确定打印机本身没有问题,完成准备工作.(安卓机先不连接打印机的usb线) 操作步骤: 1.打开外部 ...

  9. H5标签<video>安卓端兼容性问题

    H5标签<video>在安卓端兼容问题 1.autoplay不能正常生效 解决:使用muted属性可以自动播放 2.不能正常显示视频第一帧作为封面 解决:使用poster="ti ...

最新文章

  1. MDaemon无法发送加密附件
  2. pwm波如何控制电机代码_柴油发电机机组的控制器该如何操作
  3. React Native之通过createStackNavigator实现携带参数的页面与页面之间的跳转
  4. java 继承类_java类的继承
  5. 物联网现状及落地难点
  6. 我在CodePlex上建的开源项目:JavaScript Lexer and Parser(欢迎加入)
  7. python操作数据库的几种方法_python对mysql数据库操作的三种不同方式
  8. oracle -varchar ,varchar2
  9. 怎样正确安装Photoshop CS6破解版【图文教程】
  10. php + redis 实现延迟队列
  11. 联想服务器开机显示英文,在开机自检时,在联想LOGO画面处死机(即自检时死机)...
  12. Chloe.ORM 实体批量生成
  13. 诛仙服务器状态查询,《诛仙3》部分服务器数据互通公告
  14. UWB定位与蓝牙定位的优缺点分析
  15. element中滑块组件Slider展示一天24小时的时间问题
  16. pc端怎么发微信朋友圈(有照片的)?
  17. SCI投稿及Accept之后的流程
  18. 按钮(click button)
  19. c语言横坐标加一怎么表示,c语言中‘取反加一’是怎么回事啊?
  20. 解除网页屏蔽的另一种方法

热门文章

  1. 前端学习(713)创建数组
  2. 前端学习(572):margin无效情形inline水平元素的margin无效
  3. 前端学习(557):css与百分比单位
  4. 前端学习(518):三列布局实现方式
  5. 22.jsp动作元素
  6. python画蜡烛致敬烈士_「」matplotlib 股票-用python绘制蜡烛线型k线图是用代码还是绘图工具-TOP金融网...
  7. ubuntu 启动图形界面命令_Windows 10 远程连接 Ubuntu 18.04 Server图形界面
  8. Java基础之线程池
  9. python 面向对象 新式类和经典类
  10. oracle之trunc(sysdate)