[英]Xamarin Monodroid: WP7 => Android and Custom Control?
我正在使用Xamarin Monodroid將我的一些Windows Phone應用程序移植到Android。
我對Xamarin的東西很新,只是買了一張牌照。
到目前為止,在AXML中重新創建XAML UI非常好,但我遇到了自定義控件的問題。
這就是我所說的自定義控件:
在.NET中,我通過創建繼承自'UserControl'類的類創建了一堆控件,我創建了邏輯並設置了內容。 然后我用'new my_control()'等創建新實例......
我的一些控件不是以這種方式創建的,而是通過定義XAML來創建UserControl,其中沒有特定的邏輯,但是當我需要組合2個或更多控件時(例如,帶有文本的彩色正方形,所以Rectangle + TextBlock)我再次需要做'new my_control()'並將其添加到XAML UI(Grid,ListBox,StackPanel等)中的某個位置。
我怎么能用Monodroid實現類似的東西?
提前致謝!
您可以通過繼承View類來創建自己的自定義視圖。 這可以讓你做任何事情。 然后,您可以在AXML中引用它:
<your.awesome.namespace.AwesomeViewName
android:id="@+id/awesomeView"
android:layout...
/>
只需確保AXML中的命名空間名稱都是小寫,否則它將不會提取它。
但是如果您只需要一個非常簡單的AXML布局,那么您可以創建一個新的AXML文件並使用include標記將其放在那里。
關於Android的一些布局技巧有一些更一般的信息,這對於Android的Mono也適用: https : //developer.android.com/resources/articles/layout-tricks-merge.html
您也可以在Mono for Android中執行“自定義控件” - 一旦您編寫了它們,就可以將它們包含在您的axml文件中。
我擔心我手邊沒有任何簡單的例子,但有一個復雜的例子:
如果在MyNamespace
聲明一個類MyControl
並從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"
/>
有什么理由不進入構造函數? 這是我的構造函數:
protected CropImageView(IntPtr javaReference, JniHandleOwnership transfer)
: base(javaReference, transfer)
{
}
當我給crop_image_view xml充氣時,Init方法會導致循環依賴
我試過公共,私有但沒有運氣......這是我的代碼: https : //github.com/slown1/Xamarin.CircleImageCropper
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.