RelativeLayout layout_above дает ошибку "Нет ресурса"

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
  <ListView
      android:layout_above="@id/btn_4"    <-- this line error: No resource found
      android:layout_width="match_parent"
      android:layout_height="200dp" />
  <Button android:id="@+id/btn_4"         <-- I declare the id here
      android:layout_alignParentBottom="true"
      android:layout_height="wrap_content"
      android:layout_width="match_parent" />
</RelativeLayout>

Любые предложения?

Ответ 1

Как я понимаю, в первый раз, когда id используется в макете xml, перед ним должен быть знак +.

Из Объявление макета docs:

Символ плюса (+) означает, что это новое имя ресурса, которое должно быть создано и добавлено к нашим ресурсам (в файле R.java).

Итак, добавьте "+" в первую ссылку btn_4 в макете ListView, и вы можете удалить ненужный "+" из атрибута android: id в макете Button.

Ответ 2

Объявите ListView list_1 после, объявив Button btn_4, когда он пытается ссылаться на него в android:layout_above="@id/btn_4".

Ответ 3

Когда вы объявляете относительные макеты, вы должны использовать android:layout_above="@+id/layoutToBeAbove"

В противном случае система не знает, на что вы указываете.

Это объявление укажет на тот же ресурс.

Надеюсь, это помогло!