2011-08-15 4 views
11
<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> 

提案がありますか?RelativeLayoutのlayout_aboveに「リソースが見つかりません」というエラーが表示される

答えて

26

私が理解しているように、レイアウトxmlで初めてidが使用されたとき、その前に+記号が必要です。 Declaring Layoutドキュメントから

プラス記号(+)は、これが作成され、(R.javaファイルで)私たちのリソースに追加する必要があり、新たなリソース名であることを意味します。

ListViewレイアウトの最初のbtn_4参照に '+'を追加すると、Buttonレイアウトのandroid:id属性から不要な '+'を削除できます。

1

あなたは相対的なレイアウトを宣言するときに、あなたがそうでなければandroid:layout_above="@+id/layoutToBeAbove"

を使用する必要があり、システムはあなたがを指しているのか分かりません。

この宣言は、同じリソースを指します。

これが役に立った!

+0

15ヶ月前の回答を下落させた理由を分かち合いましょうか? – Codeman

2

は、それがandroid:layout_above="@id/btn_4"でそれを参照しようとしてButton btn_4を宣言後ListView list_1 を宣言します。

+0

XMLはマークアップ言語であり、ステートレスなので「実行順序」はありません。宣言されている場所に関係なく、正しいマークアップが必要です。 – Codeman

+2

Eh? XMLはあなたが作ったものです。私が望むなら、それをトップダウンで解析することができます(注文は維持されています)。それは問題を解決します*。 AがBより上に宣言でき、BがAより上に宣言していると想像してください。 –

+1

これは正しい答えです –

関連する問題