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

neo*_*neo 1 android

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

Jah*_*old 6

您可以使用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>
Run Code Online (Sandbox Code Playgroud)

如果要从代码中设置它,则可以使用LayoutParams:

FrameLayout.LayoutParams param = (FrameLayout.LayoutParams) view.getLayoutParams();
param.leftMargin = 100;
param.topMargin = 100;
param.height = 50;
param.width = 50;
view.setLayoutParams(param);
Run Code Online (Sandbox Code Playgroud)

请注意,代码中的值是像素而不是dp,因此您必须转换.我不确定这会如何转换为Xaramin,但它会给你一个想法.

无论哪种方式,您都必须考虑当具有不寻常设备尺寸的用户使用您的应用时会发生什么.Android对绝对布局没有多大用处的原因是,有太多不同的设备尺寸/密度,它们通常是不切实际的.