android - Android 中已弃用的 AbsoluteLayout 有什么替代方案?

标签 android

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

最佳答案

您可以使用 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 没有太多使用绝对布局的原因是有太多不同的设备尺寸/密度,它们通常不切实际。

关于android - Android 中已弃用的 AbsoluteLayout 有什么替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38794796/

相关文章:

android - 使用 setRepeating() 方法知道下一个闹钟时间

java - 在 Android 上使用 Java 三元运算符的奇怪行为

android - 将 LocationManager 作为 Android 服务启动

android - Double Espresso 不适用于 Robolectric

android - 将库/JAR 添加到 Eclipse Android 项目

java - 当我的应用程序崩溃时,如何向我发送错误数据?

android - 无法在 Android 应用程序中打开数据库

android - 如何在不向设备添加帐户的情况下从 Google Play 服务获取授权码?

从 Play 商店安装时,Android cordova 应用程序崩溃

android - ListView 中 ListItem 的内容垂直居中