首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >定制的TargetInvocationException ContentPageRenderer Android

定制的TargetInvocationException ContentPageRenderer Android
EN

Stack Overflow用户
提问于 2018-01-29 12:05:28
回答 1查看 239关注 0票数 0

我试图在安卓的自定义页面呈现器中,将NavigationBar中的一个NavigationBar从右侧移动到左侧。CropDetailPage是共享代码中的内容页。

代码语言:javascript
复制
[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 for按钮

代码语言:javascript
复制
<ContentPage.ToolbarItems>
    <ToolbarItem Text="Back" Command="{Binding GoBackCommand}"></ToolbarItem>
</ContentPage.ToolbarItems>
<ContentPage.Content>
 ....
</ContentPage.Content>
EN

回答 1

Stack Overflow用户

发布于 2018-01-30 02:54:59

我试图把NavigationBar中的按钮从右边移到左边

如果您的Button位于Toolbar.axml中,您可以这样更改Button的位置:

代码语言:javascript
复制
<?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>

更新:

你可以参考我的回答

Herer是一个简单的解决方案,创建一个与Toolbar颜色相同的图片,在我的项目中,我的图片是blue.png

将其放置在Toolbar的左侧,在图片和ToolbarItem之间添加一些空白的ToolbarItem以调整空间。

代码语言:javascript
复制
<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>

效果

更新2:

您可以尝试使用BoxView从博客:表单中的自定义App头,它允许我们很容易地改变高度,图标,字体系列背景梯度的所有内容页面与标题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48500879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档