Android中弃用AbsoluteLayout的替代方案是什么?

时间:2016-08-05 17:25:13

标签: android

我有一个Xamarin项目。我为IOS,Android和UWP开发。在我的应用程序中,我有UI Elements的手动布局逻辑。在IOS中,我可以使用frame属性来设置视图的呈现位置。我可以在UWP中使用Canvas作为容器和Canvas.Left,Canvas.Top属性设置x,y位置和我的代码具有做布局的逻辑。我对如何在Android中实现这一点感到困惑。 AbsoluteLayout似乎是一个完美的匹配,但它已被弃用。我可以使用其他布局实现此目的,还是应该创建自定义ViewGroup类?

2 个答案:

答案 0 :(得分: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对绝对布局没有多大用处的原因是,有太多不同的设备尺寸/密度,它们通常是不切实际的。

答案 1 :(得分:0)

您可以使用相对布局/框架布局/自定​​义布局。而不是绝对布局,因为绝对布局难以维持是其折旧的原因。