2016-08-05 84 views
1

我有一個Xamarin項目。我爲IOS,Android和UWP開發。在我的應用程序中,我有我的UI元素的手動佈局邏輯。在IOS中,我可以使用frame屬性來設置視圖將要呈現的位置。我可以通過使用Canvas作爲容器和Canvas.Left,Canvas.Top屬性來設置x,y位置,並且我的代碼具有執行佈局的邏輯,可以在UWP中執行相同的操作。我很困惑如何在Android中實現這一點。 AbsoluteLayout似乎是一個完美的搭配,但它已被棄用。我可以使用其他佈局來實現此功能,還是應創建自定義ViewGroup類?Android中已棄用的AbsoluteLayout的替代選擇是什麼?

回答

5

您可以使用FrameLayout並使用頂部和左側邊距在其中定位項目。在XML它看起來是這樣的:

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    > 

    <View 
     android:layout_width="50dp" 
     android:layout_height="50dp" 
     android:layout_marginLeft="100dp" 
     android:layout_marginTop="100dp" 
    /> 

</FrameLayout> 

如果你想從代碼中設置它,那麼你可以使用的LayoutParams:

FrameLayout.LayoutParams param = (FrameLayout.LayoutParams) view.getLayoutParams(); 
param.leftMargin = 100; 
param.topMargin = 100; 
param.height = 50; 
param.width = 50; 
view.setLayoutParams(param); 

注意,在代碼中的值是像素不dp的,所以你會必須轉換。我不知道這將如何轉換爲Xaramin,但它給你的想法。

無論採用哪種方式,您都必須考慮具有不同設備大小的用戶使用您的應用時會發生什麼情況。 Android對絕對佈局沒有多大用處的原因是,有太多不同的設備尺寸/密度,因此通常不切實際。

0

您可以使用相對佈局/框架佈局/自定​​義佈局。由於絕對佈局難以維護,因此其貶值的原因而不是絕對佈局。

+0

你的第二句話是不可理解的。 – technico

相關問題