如何修复重叠的对象

时间:2017-03-29 12:38:02

标签: android android-layout android-constraintlayout

我最近开始了解如何在Android Studio中编码并想要设置基本编码。我创建了2个数字对象和1个按钮,1个纯文本对象。 在不编写任何代码的情况下,当我单击Android Studio上的“运行应用程序”按钮并选择任何仿真器时,所有对象都会相互堆叠。有没有一种简单的方法来解决这个问题?

以下是<% @invites.each do |i| %> <%= form_for([i,i.answer.build]) do |f| %> <%= f.text_field :name_of_you_answer_field %> <%= f.submit %> <% end %> <% end %> 中的文字:

activity_main.xml

Editor Image Emulator Image

6 个答案:

答案 0 :(得分:1)

看到您的布局,您目前缺少约束。对于与实际设备上的编辑器保持在同一位置的对象,COnstraints 严重

您可以通过拖放手动添加它们来创建它们,也可以使用“推断约束”

自动添加它们

答案 1 :(得分:0)

您使用约束布局作为主要布局,这意味着布局中的元素将根据约束放置,请检查Android Documentation是否使用约束布局。

答案 2 :(得分:0)

正如@RobCo所提到的,tools命名空间属性仅适用于编辑器

  

构建应用时,构建工具会删除这些属性   对您的APK大小或运行时行为没有影响。

在布局编辑器中移动视图时,将自动生成布局文件中的tools:layout_editor_absolute属性,并且仅用于在设计布局时将其用作参考。

相反,您应该利用app:layout_constraint...属性,这些属性也可以在布局编辑器中创建。我建议您查看training documentation以了解如何执行此操作。

否则,正如@nbokmans所提到的,你可能想要考虑LinearLayout;这可能会更容易包裹你的头。

答案 3 :(得分:0)

在约束布局中,您可以使用蓝色打印调整对象轻松克服重叠。例如。选择一个对象并使用点箭头(拖动时找到)和左边缘以及右边缘和底边缘拖动到顶边,然后您可以调整对象的位置。

答案 4 :(得分:0)

删除所有tools:layout_editor_absoluteX&amp; tools:layout_editor_absoluteY属性。

根据Documentation

  

构建应用时,构建工具会删除这些属性   对您的APK大小或运行时行为没有影响

如果您想根据显示的预览和ConstraintLayout对齐所有属性,建议您详细了解ConstraintLayout以及如何Build a Responsive UI with ConstraintLayout

此外,要修复当前布局,您可以进行如下更改:

<?xml version="1.0" encoding="utf-8"?>
<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_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.myapplication70.MainActivity">

    <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="32dp"
        android:ems="10"
        android:inputType="number"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <EditText
        android:id="@+id/editText2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="32dp"
        android:ems="10"
        android:inputType="numberSigned"
        app:layout_constraintEnd_toEndOf="@+id/editText1"
        app:layout_constraintStart_toStartOf="@+id/editText1"
        app:layout_constraintTop_toBottomOf="@+id/editText1" />

    <EditText
        android:id="@+id/editText3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="32dp"
        android:ems="10"
        android:hint="Result"
        android:inputType="numberDecimal"
        app:layout_constraintEnd_toEndOf="@+id/editText2"
        app:layout_constraintStart_toStartOf="@+id/editText2"
        app:layout_constraintTop_toBottomOf="@+id/editText2" />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="32dp"
        android:text="Button"
        app:layout_constraintEnd_toEndOf="@+id/editText3"
        app:layout_constraintStart_toStartOf="@+id/editText3"
        app:layout_constraintTop_toBottomOf="@+id/editText3" />

</android.support.constraint.ConstraintLayout>

答案 5 :(得分:0)

在android studio中,你有一个名为“推断约束”的按钮。

按下该按钮,它将自动为您设置约束。