具有线性和相对布局的Scrollview全部装箱,因此我无法重新定位项目

时间:2014-01-09 17:13:47

标签: android eclipse android-layout scrollview

我正在创建一个ScrollView来容纳我的relativelayout。 RelativeLayout似乎需要在LinearLayout内部(来自在线)。然而,它已经全部装箱,物品相互重叠。这意味着我无法重新定位东西。我怎样才能解决这个问题?我的代码是这样的:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:scrollbarAlwaysDrawVerticalTrack="true"
tools:context=".AddParty" >

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <Button
        android:id="@+id/addparty_switch"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="65dp"
        android:onClick="switch_peoplechoice"
        android:text="@string/addparty_switch" />

    <Button
        android:id="@+id/addparty_cancel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/addparty_switch"
        android:layout_alignLeft="@+id/addparty_switch"
        android:layout_marginBottom="10dp"
        android:onClick="cancel"
        android:text="@string/addparty_cancel" />

    <EditText
        android:id="@+id/addparty_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/addparty_venue"
        android:layout_marginTop="11dp"
        android:ems="10"
        android:hint="@string/addparty_title"
        android:inputType="text" />

    <EditText
        android:id="@+id/addparty_venue"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/addparty_title"
        android:layout_marginTop="26dp"
        android:ems="10"
        android:hint="@string/addparty_venue"
        android:inputType="text" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/addparty_venue"
        android:layout_alignBottom="@+id/addparty_venue"
        android:layout_marginLeft="13dp"
        android:layout_toRightOf="@+id/addparty_venue"
        android:text="TextView" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/addparty_venue"
        android:layout_alignLeft="@+id/textView2"
        android:text="TextView" />

    <TimePicker
        android:id="@+id/addparty_time"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/addparty_venue"
        android:layout_below="@+id/addparty_venue"
        android:layout_marginTop="16dp" />

    <DatePicker
        android:id="@+id/addparty_date"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/addparty_time"
        android:layout_below="@+id/addparty_time"
        android:layout_marginTop="19dp" />

</RelativeLayout>

并且像所有正确填写的一样。我实际上只是在我已经拥有的relativelayout周围插入了LinearLayout和ScrollView。是否有更好的解决方案需要RelativeLayout滚动,或者我做错了什么。 它在Eclipse中的UI查看器中b ... ... 谢谢你的帮助!!

2 个答案:

答案 0 :(得分:1)

您的项目在RelativeLayout中彼此重叠,因为您很可能没有单独指定每个项目的位置,但如果没有看到整个布局xml很难确定。

请阅读http://developer.android.com/guide/topics/ui/layout/relative.html,了解有关RelativeLayouts如何运作的更多信息。

答案 1 :(得分:1)

就XML而言,似乎他们对于你的观点如何与彼此相关是一个概念错误。

让我们从具有wrap_content高度的RelativeLayout开始。没问题,但必须注意。

此RelativeLayout中的第一个元素位于RelativeLayout的底部。在这一点上仍然没有问题。

事实是,第二个视图位于第一个视图之上,这意味着插入第二个视图时RelativeLayout的高度会变大,但第一个视图应位于布局的底部,以便重新定位因此再次与第二个视图重叠。

您可以尝试使用layout_alignParentTop="true"定位第一个视图吗? 也许这会解决你的问题。