项目在 Android Studio 模拟器中的位置错误

Posted

技术标签:

【中文标题】项目在 Android Studio 模拟器中的位置错误【英文标题】:Items are in wrong place in Android Studio emulator 【发布时间】:2017-08-01 03:19:02 【问题描述】:

我是 android studio 新手,这是我的第一个应用。 它工作正常,但模拟器出现问题,它在错误的位置显示按钮。

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_
    android:layout_
    tools:context="com.example.dell_pc.myapplication.MainActivity">

    <EditText
        android:id="@+id/txtyear"
        android:layout_
        android:layout_
        android:ems="10"
        android:hint="Enter year of birth"
        android:inputType="number"
        tools:layout_editor_absoluteY="129dp"
        tools:layout_editor_absoluteX="96dp" />

    <Button
        android:id="@+id/butage"
        android:layout_
        android:layout_
        android:onClick="BuGetAge"
        android:text="Show Age"
        tools:layout_editor_absoluteY="277dp"
        tools:layout_editor_absoluteX="135dp" />

</android.support.constraint.ConstraintLayout>

我怎样才能让它出现在正确的位置?

【问题讨论】:

【参考方案1】:

在activity_main.xml中选择组件/项目(例如BUTTON)->点击“推断约束(如附件中所示)”

您的物品将在 ASE 中正确放置

对其余组件/项目执行相同操作

【讨论】:

【参考方案2】:

你绝对需要使用约束布局吗?如果没有,您可以使用相对布局,并像这样使用 layout_centerHorizo​​ntal 和 layout_centerVertical:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_ android:layout_>

    <EditText
        android:id="@+id/edittext"
        android:layout_
        android:layout_
        android:hint="blah blah"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        />

    <Button
        android:id="@+id/button"
        android:layout_
        android:layout_
        android:text="press"
        android:layout_centerHorizontal="true"
        android:layout_below="@id/edittext"
        />

</RelativeLayout>

【讨论】:

谢谢:D,这是我的第一个应用程序,所以我不知道相关布局的事情,解决了:)【参考方案3】:

tools:layout_editor_absoluteY 和 tools 命名空间中的其他属性仅在布局编辑器中有效。您的工作代码不使用这些属性,因此您的视图位于左上角,因为这是默认设置。如上所述,RelativeLayout 甚至 LinearLayout 更适合这种简单的布局。

【讨论】:

【参考方案4】:

单击一个元素,然后单击设计视图上方工具栏中的 Magic Wand 图标以推断约束,因此该元素在运行时不会跳转到 (0, 0) 位置。

【讨论】:

是的,魔杖成功了,谢谢。它到底在做什么?代码/xml有什么变化? @sb4 没问题。 wand 根据程序员放置元素的位置推断元素的约束。【参考方案5】:

只是改变:

&lt;/android.support.constraint.ConstraintLayout&gt;

&lt;/RelativeLayout&gt;

问题解决了!开心点:D

【讨论】:

您确定仅将约束更改为相对就可以解决问题吗?您还需要删除 tools:layout_editor_absoluteY="129dp" 等约束和所需的约束 Google 一直建议开发人员使用约束布局来提高性能(平面视图层次结构)。

以上是关于项目在 Android Studio 模拟器中的位置错误的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin Visual Studio 中的 Android 模拟器不显示应用程序

如何开启解决android studio的模拟器的问题

Ecplise项目转移到Android Studio,以及Genymotion模拟器介绍

将 Maven 项目从 Eclipse 导入 Android Studio

在 Android Studio 中创建新项目时如何选择目标 API 级别?

Xamarin 项目未显示在 Visual Studio Android 模拟器上