gpt4 book ai didi

android - Android 如何在布局中呈现 View ?

转载 作者:行者123 更新时间:2023-11-30 03:17:03 25 4
gpt4 key购买 nike

我在使用(我认为)简单的 LinearLayout 时遇到了问题。 (很长的问题 - 抱歉)我有一个带有 RelativeLayout 的 XML 布局,如下所示:

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>

<TextView
android:id="@+id/display_Player_Init"
android:layout_width="40dp"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:text="Player" />

<TextView
android:id="@+id/display_USGA_Index"
android:layout_width="40dp"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginLeft="5dp"
android:gravity="right"
android:layout_toRightOf="@+id/display_Tees"
android:text="IDX" />

<TextView
android:id="@+id/display_Course_HCP"
android:layout_width="40dp"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginLeft="5dp"
android:gravity="right"
android:layout_toRightOf="@+id/display_USGA_Index"
android:text="HCP" />

<TextView
android:id="@+id/display_Course"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginLeft="5dp"
android:layout_toRightOf="@+id/display_Player_Init"
android:text="Course" />

<TextView
android:id="@+id/display_Tees"
android:layout_width="50dp"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginLeft="5dp"
android:layout_toRightOf="@+id/display_Course"
android:text="Tees" />

</RelativeLayout>

这在 IDE 预览中正确显示如下:

糟糕,没有足够的代表点数来张贴图片。

应用程序正确显示了这个(注意 5 个值的顺序):

代表点数不足,无法发布图片。

RelativeLayout 看起来过于笨重,我只想使用一个更简单的 LinearLayout,如下所示:

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
>

<TextView
android:id="@+id/display_Player_Init"
android:layout_width="40dp"
android:layout_height="wrap_content"
android:text="Player" />

<TextView
android:id="@+id/display_USGA_Index"
android:layout_width="40dp"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:gravity="right"
android:text="IDX" />

<TextView
android:id="@+id/display_Course_HCP"
android:layout_width="40dp"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:gravity="right"
android:text="HCP" />

<TextView
android:id="@+id/display_Course"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:text="Course" />

<TextView
android:id="@+id/display_Tees"
android:layout_width="50dp"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:text="Tees" />

</LinearLayout>

在 IDE 中正确预览如下(请注意,第一个布局中的字段顺序不正确。我即将更正):

代表点数不足,无法发布图片。

并在应用中正确呈现如下:

代表点数不足,无法发布图片。

现在,当我更改 LinearLayout XML 中 TextView 的顺序时,它呈现为好像字段中显示了错误的值。这是 XML:

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
>

<TextView
android:id="@+id/display_Player_Init"
android:layout_width="40dp"
android:layout_height="wrap_content"
android:text="Player" />

<TextView
android:id="@+id/display_Course"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:text="Course" />

<TextView
android:id="@+id/display_Tees"
android:layout_width="50dp"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:text="Tees" />

<TextView
android:id="@+id/display_USGA_Index"
android:layout_width="40dp"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:gravity="right"
android:text="IDX" />

<TextView
android:id="@+id/display_Course_HCP"
android:layout_width="40dp"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:gravity="right"
android:text="HCP" />

</LinearLayout>

这是(正确的)IDE 预览:没有足够的代表点数来张贴图片。

但是,这是应用渲染:

代表点数不足,无法发布图片。它将字符串“ABC CC”放在右列并将其包装起来,就好像将字符串放在 HCP 字段中一样。

请注意,字段顺序是正确的,但值以某种方式转换了。 XML 字段以正确的顺序呈现,但字段的值是:Name、Index、Tees、HCP、Course,其中“course”的值包装到 HCP 字段的宽度。

这些示例之间没有更改任何代码,因此看来是 xml 导致了问题。谁能帮我理解为什么? (抱歉没有图片。)

谢谢。

最佳答案

当您使用 android:id= 将资源 ID 分配给 UI 元素(例如 TextView)时,会在 R.java 文件中创建一个 int 数据字段。

R.java 文件可以在项目的/gen 目录中找到,与此目录中的所有文件一样,它是在构建时自动生成的。

有时,如果您重新处理资源文件(例如布局 XML 文件),之前分配给一个资源(例如 TextView)的 int 值可能会引用不同的资源,即另一个 TextView。这意味着当您使用类似 findViewById(...) 的东西时,即使 R.id 指的是您想要的 UI 元素,实际的 int 资源 id 指向不同的东西。

解决此类问题的最简单方法是清理项目 - 这会删除所有自动生成的文件并重新创建它们并重新构建项目。

关于android - Android 如何在布局中呈现 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19881514/

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