我在移植我的一些Windows Phone应用程序使用Xamarin MonoDroid的到Android的过程。
我与Xamarin的东西很新,刚买许可证实际。
到目前为止好,只要在AXML重新创建XAML UI,但我面临着自定义控件的问题。
以下是我的自定义控件的意思:
在.NET中,我通过创建从“用户控件”类继承类创建一堆控制,我创建逻辑和设定的内容。 然后我就用“新my_control()”等新的实例?
我的一些控件是不是这样创建的,而是我通过定义XAML,那里有没有具体的逻辑,但创建的用户控件时,我需要组合2度或更多的控制(例如,彩色方框在它旁边的文本,所以矩形+的TextBlock),并再次我只是需要做的'新my_control()和地方在XAML UI(网格,列表框的StackPanel,等...添加它)。
我怎样才能实现与MonoDroid的类似的东西?
提前致谢!
您可以为Android做“自定义控件”中单 - 并且一旦你写的这些,那么你可以将它们包含在您的axml文件。
我怕我没有任何完美的简单的例子来伸手,但有一个复杂的例子:
https://github.com/slodge/MvvmCross/blob/master/Sample%20-%20CirriousConference/Cirrious.Conference.UI.Droid/Resources/Layout/ChildPage_Twitter.axml
如果你声明一个类MyControl
在MyNamespace
和继承从Android对照View
然后你可以设置您的自定义控制-从XML属性,包括拉-使用像一个构造函数:
public MyControl(Context context, IAttributeSet attrs) { /* ... */ }
并使用XML,如:
<mynamespace.MyControl android:layout_height='wrap_content' />
这样的一个例子可以是从控制https://github.com/Cheesebaron/MonoDroid.HorizontalPager -这可能从XML使用XML等中使用
<mynamespace.controls.HorizontalPager
android:id="@+id/MyPageHost"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
您可以通过继承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
任何理由为什么它不会进入构造函数? 这里是我的构造函数:
protected CropImageView(IntPtr javaReference, JniHandleOwnership transfer)
: base(javaReference, transfer)
{
}
Init方法使循环依赖当我充气crop_image_view XML
我曾与公共,私人但没有运气尝试...这里是我的代码: https://github.com/slown1/Xamarin.CircleImageCropper