我已检查并使用以下链接实施:
Android Action Bar Tabs, Styling the Icon and Text together
现在我可以看到文字上方的图像了。我想增加tabbar的高度,使图标的大小更大。
我还检查了How to change action bar size& https://blog.xamarin.com/material-design-for-your-xamarin-forms-android-apps/。我试图在我的Xamarin.Forms项目中实现AppCompatActivity。
首先,android活动源自global::Xamarin.Forms.Platform.Android.FormsApplicationActivity
,现在转换为global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
。
并且TabbedPage
实现了自定义渲染器。我知道必须将TabbedPageRender
转换为AppCompatActivity
。所以我也更新了渲染器。
但是现在没有调用自定义渲染器。并且我无法更改ActionBar
中AppCompatActivity
放置的Tabbar的高度。
让我知道我的错误。
谢谢。
答案 0 :(得分:1)
如果您有代码,请发布。
在您的活动中,检查您是否
FormsAppCompatActivity.ToolbarResource = Resource.Layout.toolbar; FormsAppCompatActivity.TabLayoutResource = Resource.Layout.tabs;
在OnCreate方法中,您还需要/ resources / layout文件夹中的toolbar.xml和tabs.xml。
在您的渲染器类中,请确保添加
[assembly:ExportRenderer(typeof(YourTabbedPage),typeof(YourTabbedPageRenderer))]
TabbedPageRenderer没有为您公开tablayout,因此需要反思
public class YourTabbedPageRenderer:TabbedPageRenderer { 私人TabLayout _myTabLayout;
protected override void OnElementChanged(ElementChangedEventArgs<TabbedPage> e)
{
base.OnElementChanged(e);
var fieldInfo = typeof (TabbedPageRenderer).GetField("_tabLayout", BindingFlags.Instance | BindingFlags.NonPublic);
System.Diagnostics.Debug.Assert(fieldInfo != null, "fieldInfo != null");
_myTabLayout = (TabLayout) fieldInfo.GetValue(this);
// Uncomment to Disable scrolling
//var propInfo = typeof (TabbedPageRenderer).GetProperty("UseAnimations", BindingFlags.Instance | BindingFlags.NonPublic);
//propInfo.SetValue(this, false);
if (e.OldElement != null)
{
}
if (e.NewElement != null)
{
if (_myTabLayout.TabCount != this.Element.Children.Count)
return;
for (int index = 0; index < this.Element.Children.Count; ++index)
{
_myTabLayout.GetTabAt(index).SetText("");
FileImageSource icon = this.Element.Children[index].Icon;
if (string.IsNullOrEmpty(icon))
continue;
var imageView = new AppCompatImageView(this.Context);
imageView.SetPadding(4, 4, 4, 4);
var drawable = ResourceManager.GetDrawableByName(icon.File);
imageView.SetImageResource(drawable);
_myTabLayout.GetTabAt(index).SetCustomView(imageView);
}
_myTabLayout.GetTabAt(0).Select();
}
}
}