Xamarin MonoDroid的:WP7 => Android和自定义控制?(Xamari

2019-09-18 05:41发布

我在移植我的一些Windows Phone应用程序使用Xamarin MonoDroid的到Android的过程。

我与Xamarin的东西很新,刚买许可证实际。

到目前为止好,只要在AXML重新创建XAML UI,但我面临着自定义控件的问题。

以下是我的自定义控件的意思:

在.NET中,我通过创建从“用户控件”类继承类创建一堆控制,我创建逻辑和设定的内容。 然后我就用“新my_control()”等新的实例?

我的一些控件是不是这样创建的,而是我通过定义XAML,那里有没有具体的逻辑,但创建的用户控件时,我需要组合2度或更多的控制(例如,彩色方框在它旁边的文本,所以矩形+的TextBlock),并再次我只是需要做的'新my_control()和地方在XAML UI(网格,列表框的StackPanel,等...添加它)。

我怎样才能实现与MonoDroid的类似的东西?

提前致谢!

Answer 1:

您可以为Android做“自定义控件”中单 - 并且一旦你写的这些,那么你可以将它们包含在您的axml文件。

我怕我没有任何完美的简单的例子来伸手,但有一个复杂的例子:

https://github.com/slodge/MvvmCross/blob/master/Sample%20-%20CirriousConference/Cirrious.Conference.UI.Droid/Resources/Layout/ChildPage_Twitter.axml

如果你声明一个类MyControlMyNamespace和继承从Android对照View然后你可以设置您的自定义控制-从XML属性,包括拉-使用像一个构造函数:

public MyControl(Context context, IAttributeSet attrs) { /* ... */ }

并使用XML,如:

<mynamespace.MyControl android:layout_height='wrap_content' />

这样的一个例子可以是从控制https://github.com/Cheesebaron/MonoDroid.Horizo​​ntalPager -这可能从XML使用XML等中使用

 <mynamespace.controls.HorizontalPager
    android:id="@+id/MyPageHost"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    />


Answer 2:

您可以通过继承View类使自己的自定义视图。 这可以让你做任何事情。 然后你就可以在你的AXML引用它:

<your.awesome.namespace.AwesomeViewName
  android:id="@+id/awesomeView"
  android:layout...
  />

只要确保在AXML您的命名空间的名称是全小写,否则它不会把它捡起来。

但如果你只是需要一个你要使用大量的非常简单的AXML布局,可以创建一个新的AXML文件,并使用包括标签来把它放在那里。

有一些布局技巧为Android,这将单声道工作为Android以及这里一些基本信息: https://developer.android.com/resources/articles/layout-tricks-merge.html



Answer 3:

任何理由为什么它不会进入构造函数? 这里是我的构造函数:

protected CropImageView(IntPtr javaReference, JniHandleOwnership transfer)
        : base(javaReference, transfer)
    {

    }

Init方法使循环依赖当我充气crop_image_view XML

我曾与公共,私人但没有运气尝试...这里是我的代码: https://github.com/slown1/Xamarin.CircleImageCropper



文章来源: Xamarin Monodroid: WP7 => Android and Custom Control?