android:layout_above引用RelativeLayout ID时出错

时间:2014-11-09 00:17:36

标签: android-layout

我使用看似简单的布局来解决一个奇怪的问题。这就是犯错的界限。

android:layout_above="@id/layoutButtonOrganizer"

我确实存在于R.java文件中

 **public static final int layoutButtonOrganizer=0x7f090003;**

我得到的错误是

**error: Error: No resource found that matches the given name (at 'layout_above' with value '@id/layoutButtonOrganizer').**

除非我尝试使用id来对齐上面的按钮,否则它会编译好。

<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="wrap_content"
    tools:context="com.MasinoMike.mmasinolab4_1.MainActivity" >

<Button
        android:id="@+id/buttonShowAnswer"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        ***android:layout_above="@id/layoutButtonOrganizer"***
        android:text="@string/buttonTextShowAnswer" />

    <LinearLayout
        android:id="@+id/layoutButtonOrganizer"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:orientation="horizontal" >

         <Button
             android:id="@+id/buttonNext"
             android:layout_width="0dp"
             android:layout_height="wrap_content"
             android:layout_weight="1"
             android:text="@string/buttonTextNext" />

        <Button
            android:id="@+id/buttonPrevious"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/buttonTextPrevious" />

    </LinearLayout>
</RelativeLayout>

1 个答案:

答案 0 :(得分:0)

经过几个小时的研究,我发现了发生的事情。即使LinearLayout低于我引用它的按钮(我的按钮位于xml文件中的布局上方),我必须在第一次使用@ +

时加载引用ID
android:layout_above="@+id/layoutButtonOrganizer" 

解决方案是始终确保在xml文件中第一次使用资源引用时使用@ +。在创建id所属的View对象之前加载引用会感觉排序反直觉,但是无论编译器满意是什么。

<Button
        android:id="@+id/buttonShowAnswer"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        **android:layout_above="@+id/layoutButtonOrganizer"**
        android:text="@string/buttonTextShowAnswer" />

    <LinearLayout


        **android:id="@id/layoutButtonOrganizer"**
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:orientation="horizontal" >