Xamarin Android 中修改 TabbedPage 标题字体
2017-10-03 09:44
525 查看
写在前面,本人在 Stackoverflow 上面做 Xamarin 的技术支持也有一段时间了,最近都比较有空,就在这总结一下自己解决的许多问题,希望能帮到那些有限的,屈指可数的国内 Xamarin 开发者
我只负责解决 Xamarin.Android 这一块的问题
StyledTabbedPage
StyledTabbedPageRenderer
我只负责解决 Xamarin.Android 这一块的问题
问题来源
https://stackoverflow.com/questions/46513240/xamarin-forms-change-the-tabbar-size分析
TabbedPage中没有办法直接修改字体及大小,必须要使用
Renderer,然后在 native 中去修改相应的属性,在 native Android 中
TabbedPage会渲染成
TabLayout, 所以我们要研究 如何修改
TabbedPage中的字体
TabLayout 中修改
https://stackoverflow.com/questions/30754203/tablayout-tab-styleRenderer
TabbedPage1<?xml version="1.0" encoding="utf-8" ?> <local:StyledTabbedPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="FormsIssue01.TabbedPage1" xmlns:local="clr-namespace:FormsIssue01" > <!--Pages can be added as references or inline--> <ContentPage Title="Over" /> <ContentPage Title="FaceBook" /> <ContentPage Title="Youtube" /> <ContentPage Title="Contact" /> <ContentPage Title="Contact2" /> <ContentPage Title="Contact3" /> </local:StyledTabbedPage>
StyledTabbedPage
public class StyledTabbedPage : TabbedPage { }
StyledTabbedPageRenderer
public class StyledTabbedPageRenderer : TabbedPageRenderer { private TabLayout tabLayout = null; protected override void OnElementChanged(ElementChangedEventArgs<TabbedPage> e) { base.OnElementChanged(e); this.tabLayout = (TabLayout)this.GetChildAt(1); //Method 2 changeTabsFont(); //Method 1 tabLayout.TabMode = TabLayout.ModeScrollable; tabLayout.TabGravity = TabLayout.GravityFill; } private void changeTabsFont() { //Typeface font = Typeface.CreateFromAsset(Android.App.Application.Context.Assets, "fonts/" + Constants.FontStyle); ViewGroup vg = (ViewGroup)tabLayout.GetChildAt(0); int tabsCount = vg.ChildCount; for (int j = 0; j < tabsCount; j++) { ViewGroup vgTab = (ViewGroup)vg.GetChildAt(j); int tabChildsCount = vgTab.ChildCount; for (int i = 0; i < tabChildsCount; i++) { Android.Views.View tabViewChild = vgTab.GetChildAt(i); if (tabViewChild is TextView) { //((TextView)tabViewChild).Typeface = font; ((TextView)tabViewChild).TextSize = 6; } } } } }
注意
Method 1 和 Method 2 不兼容,调整字体可以,但是不好看,推荐 Method 1相关文章推荐
- android 修改窗体标题的字体式样和背景图(自定义标题栏)
- Android原生AlertDialog修改标题,内容,按钮颜色,字体大小等
- android:修改PagerTabStrip中的背景颜色,标题字体的样式、颜色和图标以及指示条的颜色
- Android原生AlertDialog修改标题,内容,按钮颜色,字体大小等
- android:修改PagerTabStrip中的背景颜色,标题字体的样式、颜色和图标以及指示条的颜色
- Android Tablayout + viewpager 切换时修改tablayout title(标题)的字体颜色和字体大小
- android:修改PagerTabStrip中的背景颜色,标题字体的样式、颜色和图标以及指示条的颜色
- Android修改Toolbar标题和菜单项字体大小和颜色
- Android原生AlertDialog修改标题,内容,按钮颜色,字体大小等
- android 修改窗体标题的字体式样和…
- android 修改窗体标题的字体式样和…
- android spinner默认样式不支持换行和修改字体样式 的解决方法
- Android-->沉浸式状态栏字体颜色的修改(只针对小米和魅族)
- Android之修改部分字体颜色
- 【Android 应用开发】 ActionBar 样式详解 -- 样式 主题 简介 Actionbar 的 icon logo 标题 菜单样式修改
- android使用selector修改TextView中的字体颜色和背景颜色
- 增加工具栏提示&修改程序字体&设置文档标题&控制窗口显示&更新菜单选中/不选中状态
- 张高兴的 Xamarin.Forms 开发笔记:为 Android 与 iOS 引入 UWP 风格的汉堡菜单 ( MasterDetailPage )
- ios修改导航栏标题字体颜色
- Android 修改字体,跳不过的 Typeface