我已经在Android Studio或UWP中看到了与此Android版本类似的问题,但是我正在为UWP和Android构建Xamarin.Forms应用,我想将汉堡包图标更改为自定义图标做了。这是当前在Android上的外观:
在UWP上看起来很相似,但这基本上是我想要的:
在我的主要详细信息页面上有简单的方法吗?我一直在寻找可以在.xaml文件中使用的标记元素,例如:
<MasterDetailPage.Master hamburgerIcon="myHamburgerIcon.png">
</MasterDetailPage.Master>
还是我必须针对UWP和Android做平台特定的代码,例如自定义渲染器?明确地说,我在问如何更改3条形图标(汉堡图标),但是如果有人也可以包括如何更改操作条背景色,那将是一个好处。
答案 0 :(得分:0)
更改汉堡菜单图标-Xamarin.Forms Android和UWP
对于UWP部分,您可以轻松替换hamburg icon。因为在UWP平台中,它是用PaneButton
样式的button渲染的,所以您可以找到here。只需将其复制到UWP App.xaml 文件并替换content属性,如下所示。
<Application.Resources>
<ResourceDictionary>
<Style x:Key="PaneButton" TargetType="Button">
<Setter Property="FontFamily" Value="{ThemeResource SymbolThemeFontFamily}" />
<Setter Property="FontSize" Value="20" />
<Setter Property="Height" Value="48" />
<Setter Property="Width" Value="48" />
<Setter Property="Content" Value="" />
</Style>
</ResourceDictionary>
</Application.Resources>
对于Android部件,我们需要如下所示的自定义MasterDetailPageRenderer
渲染
[assembly: ExportRenderer(typeof(MainPage), typeof(IconNavigationPageRenderer))]
namespace masterDe.Droid
{
public class IconNavigationPageRenderer : MasterDetailPageRenderer
{
public IconNavigationPageRenderer(Context context):base(context) { }
private static Android.Support.V7.Widget.Toolbar GetToolbar() => (CrossCurrentActivity.Current?.Activity as MainActivity)?.FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);
protected override void OnLayout(bool changed, int l, int t, int r, int b)
{
base.OnLayout(changed, l, t, r, b);
var toolbar = GetToolbar();
if (toolbar != null)
{
for (var i = 0; i < toolbar.ChildCount; i++)
{
var imageButton = toolbar.GetChildAt(i) as Android.Widget.ImageButton;
var drawerArrow = imageButton?.Drawable as DrawerArrowDrawable;
if (drawerArrow == null)
continue;
// replace default hamburg icon
imageButton.SetImageDrawable(Forms.Context.GetDrawable(Resource.Drawable.icon));
}
}
}
}
}