gpt4 book ai didi

java - 编辑布局会导致元素混合

转载 作者:行者123 更新时间:2023-11-29 05:54:58 25 4
gpt4 key购买 nike

当使用 Eclipse 的布局编辑器设计 Android 布局时,编辑其中一个元素的 ID 或移动它会导致所有其他元素移动。此外,将整个元素包装到另一个容器中也会导致此问题。

enter image description here

事情是这样的。在此之后,将元素移动到正确的位置是绝对不可能的。

如何解决这个问题?

编辑前的XML文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<EditText
android:id="@+id/securityQuestion"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="31dp"
android:ems="10"
android:hint="@string/turvak" >

<requestFocus />

</EditText>

<EditText
android:id="@+id/securityQuestionAnswer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/securityQuestion"
android:layout_below="@+id/securityQuestion"
android:layout_marginTop="24dp"
android:ems="10"
android:hint="@string/vastaus"
android:inputType="textPassword" />

<EditText
android:id="@+id/password1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/securityQuestion"
android:layout_below="@+id/securityQuestionAnswer"
android:layout_marginTop="57dp"
android:ems="10"
android:hint="@string/salis"
android:inputType="textPassword" />

<EditText
android:id="@+id/password2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/password1"
android:layout_alignRight="@+id/password1"
android:layout_centerVertical="true"
android:ems="10"
android:hint="@string/salasanauudelleen"
android:inputType="textPassword" >
</EditText>

<Button
android:id="@+id/saveButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/password2"
android:layout_below="@+id/password2"
android:layout_marginTop="30dp"
android:text="@string/tallenna" />

</RelativeLayout>

添加一个容器后,一个 ScrollView:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/ScrollView1"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent" >

<EditText
android:id="@+id/securityQuestion"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="31dp"
android:ems="10"
android:hint="@string/turvak" >

<requestFocus />
</EditText>

<EditText
android:id="@+id/securityQuestionAnswer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/securityQuestion"
android:layout_below="@+id/securityQuestion"
android:layout_marginTop="24dp"
android:ems="10"
android:hint="@string/vastaus"
android:inputType="textPassword" />

<EditText
android:id="@+id/password1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/securityQuestion"
android:layout_below="@+id/securityQuestionAnswer"
android:layout_marginTop="57dp"
android:ems="10"
android:hint="@string/salis"
android:inputType="textPassword" />

<EditText
android:id="@+id/password2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/password1"
android:layout_alignRight="@+id/password1"
android:layout_centerVertical="true"
android:ems="10"
android:hint="@string/salasanauudelleen"
android:inputType="textPassword" >
</EditText>

<Button
android:id="@+id/saveButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/password2"
android:layout_below="@+id/password2"
android:layout_marginTop="30dp"
android:text="@string/tallenna" />
</RelativeLayout>

</ScrollView>

最佳答案

我猜你正在使用 RelativeLayout .在此布局中, View 定义了它们相对于其他 View 的位置。因此,更改一个 View 的位置/id,将重新定位所有依赖于该 View 的 View ,以及所有依赖于 View 的 View ,这些 View 依赖于编辑 View 等。此外,当您将现有 View 包装在另一个布局容器中时,其他 View 将无法再直接引用它们,从而导致相同的行为。

您可以通过以下方式解决(好吧,真的避免)这个问题:

  1. 转到 XML 并查找/替换您要更改的 ID。这将更改对它的所有引用,并确保 View 不会尝试将自己定位到现在不存在的 ID
  2. 使用像 LinearLayout 这样的布局,其中 View 位置不依赖于其他 View (但是, View 大小可能)。

除此之外,没有解决方法,因为这是预期的行为。

关于java - 编辑布局会导致元素混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12543640/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com