我正在使用 TabbedPage 作为我的Xamarin.Forms应用程序的主页(Xamarin.Forms版本:2.3.5.239-pre3)。我的MainActivity继承自 FormsAppCompatActivity 。
TabbedPage中添加了四个 ContentPage 类型的页面,如:
<TabbedPage ... >
<pages:FirstPage Title="Testpage1" Icon="icon.png" />
<pages:SecondPage Title="Testpage2" Icon="icon.png" />
<pages:ThirdPage Title="Testpage3" Icon="icon.png" />
<pages:FourthPage Title="Testpage3" Icon="icon.png" />
</TabbedPage>
但是,标签显示如下:
现在我需要更改title属性的字体大小,这样就会显示整个标题。什么是最好的方法呢?我尝试了 CustomRenderer ,但我无法弄清楚如何访问标签项。
我试过了:
[assembly: ExportRenderer(typeof(TabbedPage), typeof(CustomTab))]
namespace AdvancedForms.Droid.CustomRenderer
{
public class CustomTab : TabbedRenderer
{
protected override void DispatchDraw(Canvas canvas)
{
base.DispatchDraw(canvas);
ActionBar actionBar = activity.ActionBar;
// Do Stuff here
}
}
}
但是activity.ActionBar总是为空。
答案 0 :(得分:4)
您应该寻找TabLayout,而不是ActionBar。最后我检查了TabLayout是渲染器视图层次结构中的第二个子节点,所以你应该能够这样做:
var tabLayout = (TabLayout)GetChildAt(1);
完成后,您需要遍历各个标签,并将所需的字体大小应用于每个标签的文本视图。
有用的提示,视图层次结构如下所示:
MsiTabbedRenderer
FormsViewPager
TabLayout
SlidingTabStrip
TabView
AppCompatImageView
AppCompatTextView
TabView
AppCompatImageView
AppCompatTextView
TabView
AppCompatImageView
AppCompatTextView
...
我用来生成此信息的方法包含在下面,供您欣赏:
public static void DebugLayout(this View self, int indent = 0)
{
// write info about me first
var indents = new string('\t', indent);
System.Diagnostics.Debug.WriteLine(indents + self.GetType().Name);
// check if I'm a view group
var vg = self as ViewGroup;
if (vg == null) return;
// enumerate my children
var children = Enumerable.Range(0, vg.ChildCount).Select(x => vg.GetChildAt(x));
// recurse on each child
foreach (var child in children)
DebugLayout(child, indent+1);
}
答案 1 :(得分:0)
对于“自定义”选项卡视图/页面,我正在使用xam.Tabview(Xamarin.Forms)组件,它按预期工作。 它支持自定义标题和内容视图。
安装Nuget:TabView Nuget