ADTとEclipseでのレイアウトのサポートに少し不満を感じています。もう一度スイングします。基本的に私は次のような単純なレイアウトを実装しようとしています:RelativeLayout
+----------------+
| |
| FrameLayout |
| ImageView |
| |
| |
| |
+----------------+
| LinearLayout |
| TextView |
| Buttons |
+----------------+
私が書いたパン/ズームリスナーのサポートのために、RelativeLayoutとFrameLayoutがImageViewで使用されます。
私が抱えている問題は、LinearLayout(下部のコントロール)が、何を試してもウィンドウの下部に表示されないことです。下にあるものを貼り付けるだけです。FieldViewはImageViewの拡張であることに注意してください。画像は正常に表示されます。邪魔になるFrameLayoutの上に表示したいLinearLayoutです。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fieldcontainer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:baselineAligned="false"
android:orientation="vertical" >
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent" >
<com.test.FieldView
android:id="@+id/field"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>
<LinearLayout
android:id="@+id/controls"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<Button
android:id="@+id/buttonAddNode"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Add node" />
<TextView
android:id="@+id/textViewNodeInfo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" />
</LinearLayout>
</RelativeLayout>
アドバイスをよろしくお願いします。以前の試行でRelativeLayoutパラメーターを誤用した可能性があります。
更新 迅速な対応に感謝します!以下のコードでコメントすることができなかったので、これが私が試したアップデートです:
<FrameLayout
...
android:layout_above="@+id/controls">
;以前は、実行時に次の例外が発生しました。
Unable to start activity ComponentInfo{com.test.MainActivity}:
java.lang.ClassCastException: android.widget.LinearLayout
例外をスローする行は、私のMainActivity.OnCreate()にあります。
view = (FieldView) findViewById(R.id.field);
layout_belowを追加するとIDの不一致が発生したようです。R.id.fieldを見つけると、間違ったLinearLayoutのIDが返されますが、これは当然キャストできません。
layout_aboveがなければ、これは問題なく機能し、レイアウトが壊れているだけであることに注意してください。繰り返しますが、FieldViewはImageViewの単なる拡張です。タッチリスナーやその他のものをそこに保存します。