我对 ADT 和 Eclipse 中的布局支持感到有些沮丧。又是 Swing 了。基本上我正在尝试实现一个简单的布局,如下所示:RelativeLayout
+----------------+
| |
| FrameLayout |
| ImageView |
| |
| |
| |
+----------------+
| LinearLayout |
| TextView |
| Buttons |
+----------------+
RelativeLayout 和 FrameLayout 与 ImageView 一起用于我编写的一些平移/缩放侦听器支持。
我遇到的问题是无论我尝试什么,LinearLayout(底部控件)都不会在窗口底部显示。我将简单地粘贴下面的内容。请注意,FieldView 是 ImageView 的扩展。图像显示良好,它的 LinearLayout 想要显示在挡路的 FrameLayout 之上。
<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 的扩展。我将我的触摸监听器和其他一些东西存储在那里。