简体   繁体   English

相对布局的AndroidStudio问题

[英]AndroidStudio Problem with Relative Layout

I have a problem with RelativeLayout . 我对RelativeLayout有问题。 In design view I can see my Layout works perfect, but in runtime one EditText goes down from the screen. 在设计视图中,我可以看到我的布局工作正常,但是在运行时,一个EditText从屏幕上消失了。

Here is some code of my layout: 这是我的布局的一些代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    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">

<TextView
    android:id="@+id/tvInicio"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="23dp"
    android:text="@string/dialog_titulo"
    android:textColor="@color/colorPrimary"
    android:textSize="24sp"
    android:textStyle="bold" />

<TextView
    android:id="@+id/tvPrimero"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentStart="true"
    android:layout_alignParentTop="true"
    android:layout_marginTop="85dp"
    android:text="@string/dialog_max"
    android:textColor="@color/colorPrimary"
    android:layout_alignParentLeft="true" />

<EditText
    android:id="@+id/etMaximo"
    android:layout_width="111dp"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/tvPrimero"
    android:layout_alignParentEnd="true"
    android:ems="10"
    android:hint="@string/dialog_etMax"
    android:inputType="number"
    android:layout_alignParentRight="true" />

<EditText
    android:id="@+id/etMinimo"
    android:layout_width="111dp"
    android:layout_height="wrap_content"
    android:layout_alignParentEnd="true"
    android:layout_alignParentTop="true"
    android:layout_marginTop="151dp"
    android:ems="10"
    android:hint="@string/dialog_etMin"
    android:inputType="number"
    android:layout_alignParentRight="true" />

<TextView
    android:id="@+id/tvSegundo"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentStart="true"
    android:layout_below="@+id/etMinimo"
    android:text="@string/dialog_maxmin"
    android:textColor="@color/colorPrimary"
    android:layout_alignParentLeft="true" />

<EditText
    android:id="@+id/etMaximo2"
    android:layout_width="111dp"
    android:layout_height="wrap_content"
    android:layout_alignParentEnd="true"
    android:layout_below="@+id/tvSegundo"
    android:ems="10"
    android:hint="@string/dialog_etMax"
    android:inputType="number"
    android:layout_alignParentRight="true" />

<TextView
    android:id="@+id/tvTexto"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/etTexto"
    android:layout_alignParentStart="true"
    android:text="@string/diaog_textoTitulo"
    android:textColor="@color/colorPrimary"
    android:layout_alignParentLeft="true" />

<EditText
    android:id="@+id/etTexto"
    android:layout_width="193dp"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentEnd="true"
    android:layout_marginBottom="180dp"
    android:ems="10"
    android:hint="@string/diaog_etTextoTitulo"
    android:inputType="textPersonName"
    android:layout_alignParentRight="true" />

<LinearLayout
    android:layout_width="360dp"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true">

    <Button
        android:id="@+id/btnCancelar"
        android:layout_width="176dp"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="19dp"
        android:layout_toLeftOf="@+id/etTexto"
        android:layout_toStartOf="@+id/etTexto"
        android:background="@drawable/boton_redondeado2"
        android:text="@string/iniciar_sesion_cancelar"
        android:textColor="@android:color/background_light" />

    <Button
        android:id="@+id/btnGuardar"
        android:layout_width="178dp"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:layout_alignTop="@+id/btnCancelar"
        android:layout_marginEnd="9dp"
        android:layout_marginRight="9dp"
        android:background="@drawable/boton_redondeado"
        android:text="@string/diaog_guardar"
        android:textColor="@android:color/background_light" />

</LinearLayout>

See here 看这里

Run time view look like this 运行时视图看起来像这样

Can someone help me because I'm desperate. 有人可以帮我,因为我很绝望。 My English is bad, so I accept edits 我的英语不好,所以我接受编辑

Try to delete android:layout_alignParentEnd="true" and then clean your project after the clean, run again. 尝试删除android:layout_alignParentEnd="true" ,然后在清理后清理项目,然后再次运行。 Make sure that your Relative Layout is closed right after the linear ends </LinearLayout> </RelativeLayout> 确保在线性末端</LinearLayout> </RelativeLayout>之后立即关闭相对布局

Does it work now? 现在可以用吗?

I used this xml and it worked on a Nexus 5 emulator 我使用了这个xml,并且可以在Nexus 5模拟器上使用

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
 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">

 <TextView
    android:id="@+id/tvInicio"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="23dp"
    android:text="TEST"
    android:textColor="@color/colorPrimary"
    android:textSize="24sp"
    android:textStyle="bold" />

<TextView
    android:id="@+id/tvPrimero"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentStart="true"
    android:layout_alignParentTop="true"
    android:layout_marginTop="85dp"
    android:text="test"
    android:textColor="@color/colorPrimary"
    android:layout_alignParentLeft="true" />

<EditText
    android:id="@+id/etMaximo"
    android:layout_width="111dp"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/tvPrimero"
    android:layout_alignParentEnd="true"
    android:ems="10"
    android:hint="test"
    android:inputType="number"
    android:layout_alignParentRight="true" />

<EditText
    android:id="@+id/etMinimo"
    android:layout_width="111dp"
    android:layout_height="wrap_content"
    android:layout_alignParentEnd="true"
    android:layout_alignParentTop="true"
    android:layout_marginTop="151dp"
    android:ems="10"
    android:hint="test"
    android:inputType="number"
    android:layout_alignParentRight="true" />

<TextView
    android:id="@+id/tvSegundo"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentStart="true"
    android:layout_below="@+id/etMinimo"
    android:text="test"
    android:textColor="@color/colorPrimary"
    android:layout_alignParentLeft="true" />

<EditText
    android:id="@+id/etMaximo2"
    android:layout_width="111dp"
    android:layout_height="wrap_content"
    android:layout_alignParentEnd="true"
    android:layout_below="@+id/tvSegundo"
    android:ems="10"
    android:hint="test"
    android:inputType="number"
    android:layout_alignParentRight="true" />

<TextView
    android:id="@+id/tvTexto"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/etTexto"
    android:layout_alignParentStart="true"
    android:text="test"
    android:textColor="@color/colorPrimary"
    android:layout_alignParentLeft="true" />

<EditText
    android:id="@+id/etTexto"
    android:layout_width="193dp"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"

    android:layout_marginBottom="180dp"
    android:ems="10"
    android:hint="this should stay right here"
    android:inputType="textPersonName"
    android:layout_alignParentRight="true" />

<LinearLayout
    android:layout_width="360dp"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true">

    <Button
        android:id="@+id/btnCancelar"
        android:layout_width="176dp"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="19dp"
        android:layout_toLeftOf="@+id/etTexto"
        android:layout_toStartOf="@+id/etTexto"
        android:background="@color/colorPrimary"
        android:text="button"
        android:textColor="@android:color/background_light" />

    <Button
        android:id="@+id/btnGuardar"
        android:layout_width="178dp"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:layout_alignTop="@+id/btnCancelar"
        android:layout_marginEnd="9dp"
        android:layout_marginRight="9dp"
        android:background="@color/colorAccent"
        android:text="button"
        android:textColor="@android:color/background_light" />

</LinearLayout>
</RelativeLayout>

Give this id to the LinearLayout : 将此id赋予LinearLayout

android:id="@+id/layout"

and add this attribute to etTexto : 并将此属性添加到etTexto

android:layout_above="@+id/layout"

also adjust the bottom margin as you like. 还可以根据需要调整底部边距。

Maybe you should try putting it below EditText that is above it? 也许您应该尝试将其放在其上方的EditText下方?

Remove 去掉

android:layout_alignParentBottom="true"
android:layout_marginBottom="180dp"

Add

android:layout_below="@+id/etMaximo2"

Result 结果

<EditText
    android:id="@+id/etTexto"
    android:layout_width="193dp"
    android:layout_height="wrap_content"
    android:layout_alignParentEnd="true"
    android:layout_below="@+id/etMaximo2"
    android:ems="10"
    android:hint="@string/diaog_etTextoTitulo"
    android:inputType="textPersonName"
    android:layout_alignParentRight="true" />

Then set some top margin android:layout_marginTop="{some value}dp" to make it look like you want. 然后设置一些最高边距android:layout_marginTop="{some value}dp"以使其看起来像您想要的。

When using RelativeLayout , instead of using 使用RelativeLayout ,而不是使用

android:layout_alignParentBottom="true"
android:layout_marginBottom="180dp"

like you are doing in the EditText with with id @+id/etTexto , you can simply write this code: android:layout_below="@id/etMaximo2" You can even place some android:layout_marginTop if you want to add more space between the two Views. 就像您在使用ID @+id/etTexto的EditText中所做的@+id/etTexto ,您只需编写以下代码即可: android:layout_below="@id/etMaximo2"如果您想在两个之间添加更多空间,甚至可以放置android:layout_marginTop两个视图。

PS For testing in the design view, know that you can change the dimensions of the device you're testing, so you can see in the "Preview" window what it would look like on device with different screen sizes. PS要在设计视图中进行测试,请知道您可以更改要测试的设备的尺寸,因此您可以在“预览”窗口中查看在具有不同屏幕尺寸的设备上的外观。 You can change this in the top toolbar of the preview window. 您可以在预览窗口的顶部工具栏中更改此设置。

I hope this helps you! 我希望这可以帮助你! :) :)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM