我使用看似简单的布局来解决一个奇怪的问题。这就是犯错的界限。
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>
答案 0 :(得分:0)
经过几个小时的研究,我发现了发生的事情。即使LinearLayout低于我引用它的按钮(我的按钮位于xml文件中的布局上方),我必须在第一次使用@ +
时加载引用IDandroid: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" >