在 Android 上,BottomNavigationView 中的活动项标签被连字符连接。这是因为活动标签的字体大小增加了。我希望它的行为类似于 iOS 导航栏,其中活动项目标签大小与其他标签没有区别。我按照本教程来达到这一点。问题图片
我找到了适用于 Android 原生How to remove hypheanted labels 的解决方案,但我不知道如何将它与 Xamarin Forms 一起使用。
我试过设置 ItemTextAppearanceActive:
public class NoShiftEffect : PlatformEffect {
protected override void OnAttached() {
if (!(Container.GetChildAt(0) is ViewGroup layout)) {
return;
}
if (!(layout.GetChildAt(1) is BottomNavigationView bottomNavigationView)) {
return;
}
bottomNavigationView.LabelVisibilityMode = LabelVisibilityMode.LabelVisibilityLabeled;
// How to set this?
bottomNavigationView.ItemTextAppearanceActive = 5;
}
protected override void OnDetached() {
}
}
任何想法在哪里设置?
在标签页渲染器中试试这个:
public class CustomTabbedPageRenderer : TabbedPageRenderer
{
public CustomTabbedPageRenderer(Context context) : base(context)
{
}
protected override void OnElementChanged(ElementChangedEventArgs<TabbedPage> e)
{
base.OnElementChanged(e);
if (Element != null)
{
var bottomNavigationView = (GetChildAt(0) as Android.Widget.RelativeLayout).GetChildAt(1) as BottomNavigationView;
var bottomNavMenuView = bottomNavigationView.GetChildAt(0) as BottomNavigationMenuView;
for (var i = 0; i < Element.Children.Count; i++)
{
var item = bottomNavMenuView.GetChildAt(i) as BottomNavigationItemView;
var itemTitle = item.GetChildAt(1);
var smallTextView = ((TextView)((BaselineLayout)itemTitle).GetChildAt(0));
var largeTextView = ((TextView)((BaselineLayout)itemTitle).GetChildAt(1));
smallTextView.TextSize = 5f;
largeTextView.TextSize = 5f;
smallTextView.Ellipsize = Android.Text.TextUtils.TruncateAt.End;
largeTextView.Ellipsize = Android.Text.TextUtils.TruncateAt.End;
}
}
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句