我试图在Android中的自定义页面渲染器中将NavigationBar中的Button
从右侧移动到左侧。 CropDetailPage
是共享代码中的内容页面。
[assembly: ExportRenderer(typeof(CropDetailPage),typeof(CropDetailPageRenderer))]
namespace MyApp.Droid
{
public class CropDetailPageRenderer : PageRenderer
{
public CropDetailPageRenderer(Context context)
: base(context)
{
}
protected override void OnElementChanged(ElementChangedEventArgs<Page> e)
{
base.OnElementChanged(e);
if (e.OldElement != null || Element == null)
{
return;
}
var bar = FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);
bar.SetBackgroundColor(Android.Graphics.Color.Azure);
// Only have 1 child
bar.GetChildAt(0).SetX(10);
}
}
}
当我尝试打开引用页面时,我收到此异常
System.Reflection.TargetInvocationException:调用目标抛出了异常。
我已尝试在OnElementChanged
方法中对代码进行评论,但异常情况仍然存在,因此我知道它并非来自逻辑。
此外,这是自定义Toolbar
外观的正确方法吗?由于我想将按钮向左移动,我只想更改X coordinate
。
对于发生了什么的任何想法?
编辑:按钮的Xaml
<ContentPage.ToolbarItems>
<ToolbarItem Text="Back" Command="{Binding GoBackCommand}"></ToolbarItem>
</ContentPage.ToolbarItems>
<ContentPage.Content>
....
</ContentPage.Content>
答案 0 :(得分:0)
我正在尝试将NavigationBar中的Button从右侧移动到左侧
如果您的Button
位于Toolbar.axml
,您可以更改Button
的位置:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
android:popupTheme="@style/ThemeOverlay.AppCompat.Light">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<Button
android:text="Button"
android:layout_alignParentRight="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</RelativeLayout>
</android.support.v7.widget.Toolbar>
您可以参考我的answer:
Herer是一个简单的解决方案,创建一张颜色与Toolbar
相同的图片,在我的项目中,我的图片是blue.png
:
将其放在Toolbar
的左侧,在图片和ToolbarItem
之间添加一些空白ToolbarItem
以调整空间。
<ContentPage.ToolbarItems>
<ToolbarItem Text="Button" Order="Primary" Priority="0"/>
<ToolbarItem Order="Primary" Priority="0" />
<ToolbarItem Order="Primary" Priority="0" />
<ToolbarItem Order="Primary" Priority="0" />
<ToolbarItem Order="Primary" Priority="0" />
<ToolbarItem Order="Primary" Priority="0" />
<ToolbarItem Order="Primary" Priority="0" />
<ToolbarItem Order="Primary" Priority="1" Icon="blue"/>
</ContentPage.ToolbarItems>
您可以尝试使用博客中的BoxView:Custom App Header in Forms,它允许我们使用标题轻松更改所有内容页面的高度,图标,字体系列背景渐变。