Android RelativeLayout,隐藏视图并推动下方的视图

时间:2014-05-30 08:03:01

标签: android android-layout android-relativelayout

我有一个RelativeLayout,其中包含Spinner和一些RadioButton,基于这些选择,我必须隐藏一些视图并让其他视图可见。问题是如果我通过GONE制作视图view.setVisibility(View.GONE)布局搞砸了,视图重叠,如果我使用view.Visibility(View.INVISIBLE)一切都很好但是缺少的视图在页面上创建了一个空白。我想推动下面的视图来正确地扩充页面。以下是一个更好的解释:

enter image description here

enter image description here

到目前为止,我的代码是:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/bg_app" >

    <ScrollView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:isScrollContainer="true"
        android:scrollbarAlwaysDrawVerticalTrack="true"
        android:scrollbarStyle="insideOverlay"
        android:scrollbars="vertical" >

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true" >

            <Spinner
                android:id="@+id/spinner1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_centerHorizontal="true"
                android:layout_marginLeft="20dp"
                android:layout_marginRight="20dp"
                android:layout_marginTop="60dp"
                android:background="@drawable/drop_down" />

            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignLeft="@+id/spinner1"
                android:layout_below="@+id/textView5"
                android:layout_marginTop="30dp"
                android:text="xxx"
                android:textColor="#002f44"
                android:textSize="18sp" />

            <Button
                android:id="@+id/button2"
                android:layout_width="170dp"
                android:layout_height="30dp"
                android:layout_alignBaseline="@+id/textView1"
                android:layout_alignRight="@+id/spinner1"
                android:background="@drawable/btn_calendar"
                android:textColor="#FFBF00" />

            <TextView
                android:id="@+id/textView3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_alignParentTop="true"
                android:visibility="invisible" />

            <ImageView
                android:id="@+id/imageView1"
                android:layout_width="120dp"
                android:layout_height="120dp"
                android:layout_alignLeft="@+id/textView1"
                android:layout_below="@+id/textView1"
                android:layout_marginTop="20dp"
                android:scaleType="centerCrop" />

            <AutoCompleteTextView
                android:id="@+id/editText1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignRight="@+id/spinner1"
                android:layout_alignTop="@+id/imageView1"
                android:layout_marginLeft="10dp"
                android:layout_marginTop="5dp"
                android:layout_toRightOf="@+id/imageView1"
                android:ems="6"
                android:hint="xx xx"
                android:inputType="textPersonName"
                android:maxLength="25"
                android:textColor="#002f44" />

            <TextView
                android:id="@+id/textView2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignLeft="@+id/editText1"
                android:layout_below="@+id/editText1"
                android:padding="03dp"
                android:textColor="#610B0B" />

            <Button
                android:id="@+id/button1"
                android:layout_width="120dp"
                android:layout_height="50dp"
                android:layout_alignLeft="@+id/textView2"
                android:layout_below="@+id/textView2"
                android:background="@drawable/btn_addreminder"
                android:text="xxx"
                android:textColor="#002f44"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/textView4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignLeft="@+id/spinner1"
                android:layout_below="@+id/spinner1"
                android:layout_marginTop="20dp"
                android:text="xxx "
                android:textColor="#002f44"
                android:textSize="18sp" />

            <RadioGroup
                android:id="@+id/radioGroup1"
                android:layout_width="180dp"
                android:layout_height="wrap_content"
                android:layout_alignRight="@+id/spinner1"
                android:layout_alignTop="@+id/textView4"
                android:layout_marginTop="-5dp"
                android:background="@drawable/widget_style"
                android:orientation="horizontal" >

                <RadioButton
                    android:id="@+id/radio0"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:checked="true"
                    android:text="xxx"
                    android:textColor="#002f44" />

                <RadioButton
                    android:id="@+id/radio1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="25dp"
                    android:text="xxx"
                    android:textColor="#002f44" />
            </RadioGroup>

            <TextView
                android:id="@+id/textView5"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignLeft="@+id/spinner1"
                android:layout_below="@+id/radioGroup1"
                android:layout_marginTop="25dp"
                android:text="xxx"
                android:textColor="#002f44"
                android:textSize="18sp" />

            <AutoCompleteTextView
                android:id="@+id/autoname"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignBaseline="@+id/textView5"
                android:layout_alignRight="@+id/spinner1"
                android:ellipsize="end"
                android:ems="8"
                android:hint="xx xx"
                android:maxLines="1"
                android:scrollHorizontally="true"
                android:singleLine="true"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:textColor="#002f44" >
            </AutoCompleteTextView>

            <Button
                android:id="@+id/button4"
                android:layout_width="100dp"
                android:layout_height="40dp"
                android:layout_alignLeft="@+id/imageView1"
                android:layout_below="@+id/button1"
                android:layout_marginLeft="05dp"
                android:layout_marginTop="66dp"
                android:background="@drawable/btn_addreminder"
                android:text="xxx"
                android:textColor="#002f44"
                android:textStyle="bold" />

            <Button
                android:id="@+id/Button01"
                android:layout_width="100dp"
                android:layout_height="40dp"
                android:layout_alignParentBottom="true"
                android:layout_centerHorizontal="true"
                android:background="@drawable/btn_addreminder"
                android:text="xxx"
                android:textColor="#002f44"
                android:textStyle="bold" />

            <Button
                android:id="@+id/Button02"
                android:layout_width="100dp"
                android:layout_height="40dp"
                android:layout_alignBaseline="@+id/button4"
                android:layout_alignBottom="@+id/button4"
                android:layout_alignRight="@+id/editText1"
                android:background="@drawable/btn_addreminder"
                android:text="xxx"
                android:textColor="#002f44"
                android:textStyle="bold" />
        </RelativeLayout>
    </ScrollView>

</RelativeLayout>

3 个答案:

答案 0 :(得分:3)

您应该使用alignWithParentIfMissing属性。

我重新设计了您的布局,试一试

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <ScrollView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:isScrollContainer="true"
        android:scrollbarAlwaysDrawVerticalTrack="true"
        android:scrollbarStyle="insideOverlay"
        android:scrollbars="vertical" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >

            <Spinner
                android:id="@+id/spinner1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_centerHorizontal="true"
                android:layout_marginLeft="20dp"
                android:layout_marginRight="20dp"
                android:layout_marginTop="60dp" />

            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_centerHorizontal="true"
                android:paddingLeft="20dp"
                android:paddingRight="20dp" >

                <TextView
                    android:id="@+id/textView1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentLeft="true"
                    android:layout_below="@+id/textView5"
                    android:layout_marginTop="30dp"
                    android:text="xxx"
                    android:textColor="#002f44"
                    android:textSize="18sp" />

                <Button
                    android:id="@+id/button2"
                    android:layout_width="170dp"
                    android:layout_height="30dp"
                    android:layout_alignBaseline="@+id/textView1"
                    android:layout_alignParentRight="true"
                    android:textColor="#FFBF00" />

                <TextView
                    android:id="@+id/textView3"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentTop="true"
                    android:visibility="invisible" />

                <ImageView
                    android:id="@+id/imageView1"
                    android:layout_width="120dp"
                    android:layout_height="120dp"
                    android:layout_alignLeft="@+id/textView1"
                    android:layout_below="@+id/textView1"
                    android:layout_marginTop="20dp"
                    android:scaleType="centerCrop" />

                <AutoCompleteTextView
                    android:id="@+id/editText1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentRight="true"
                    android:layout_alignTop="@+id/imageView1"
                    android:layout_marginLeft="10dp"
                    android:layout_marginTop="5dp"
                    android:layout_toRightOf="@+id/imageView1"
                    android:ems="6"
                    android:hint="xx xx"
                    android:inputType="textPersonName"
                    android:maxLength="25"
                    android:textColor="#002f44" />

                <TextView
                    android:id="@+id/textView2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignLeft="@+id/editText1"
                    android:layout_below="@+id/editText1"
                    android:padding="03dp"
                    android:textColor="#610B0B" />

                <Button
                    android:id="@+id/button1"
                    android:layout_width="120dp"
                    android:layout_height="50dp"
                    android:layout_alignLeft="@+id/textView2"
                    android:layout_below="@+id/textView2"
                    android:text="xxx"
                    android:textColor="#002f44"
                    android:textStyle="bold" />

                <TextView
                    android:id="@+id/textView4"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentTop="true"
                    android:layout_marginTop="20dp"
                    android:text="xxx "
                    android:textColor="#002f44"
                    android:textSize="18sp" />

                <RadioGroup
                    android:id="@+id/radioGroup1"
                    android:layout_width="180dp"
                    android:layout_height="wrap_content"
                    android:layout_alignParentRight="true"
                    android:layout_alignTop="@+id/textView4"
                    android:layout_marginTop="-5dp"
                    android:orientation="horizontal" >

                    <RadioButton
                        android:id="@+id/radio0"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:checked="true"
                        android:text="xxx"
                        android:textColor="#002f44" />

                    <RadioButton
                        android:id="@+id/radio1"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginLeft="25dp"
                        android:text="xxx"
                        android:textColor="#002f44" />
                </RadioGroup>

                <TextView
                    android:id="@+id/textView5"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentLeft="true"
                    android:layout_below="@+id/radioGroup1"
                    android:layout_marginTop="25dp"
                    android:text="xxx"
                    android:textColor="#002f44"
                    android:textSize="18sp" />

                <AutoCompleteTextView
                    android:id="@+id/autoname"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignBaseline="@+id/textView5"
                    android:layout_alignParentRight="true"
                    android:ellipsize="end"
                    android:ems="8"
                    android:hint="xx xx"
                    android:maxLines="1"
                    android:scrollHorizontally="true"
                    android:singleLine="true"
                    android:textAppearance="?android:attr/textAppearanceMedium"
                    android:textColor="#002f44" >
                </AutoCompleteTextView>

                <Button
                    android:id="@+id/button4"
                    android:layout_width="100dp"
                    android:layout_height="40dp"
                    android:layout_alignLeft="@+id/imageView1"
                    android:layout_below="@+id/button1"
                    android:layout_marginLeft="05dp"
                    android:layout_marginTop="66dp"
                    android:text="xxx"
                    android:textColor="#002f44"
                    android:textStyle="bold" />

                <Button
                    android:id="@+id/Button01"
                    android:layout_width="100dp"
                    android:layout_height="40dp"
                    android:layout_alignParentBottom="true"
                    android:layout_centerHorizontal="true"
                    android:text="xxx"
                    android:textColor="#002f44"
                    android:textStyle="bold" />

                <Button
                    android:id="@+id/Button02"
                    android:layout_width="100dp"
                    android:layout_height="40dp"
                    android:layout_alignBaseline="@+id/button4"
                    android:layout_alignBottom="@+id/button4"
                    android:layout_alignRight="@+id/editText1"
                    android:text="xxx"
                    android:textColor="#002f44"
                    android:textStyle="bold" />
            </RelativeLayout>
        </LinearLayout>
    </ScrollView>

</RelativeLayout>

答案 1 :(得分:1)

在ScrollView中使用LinearLayout(垂直)并创建RelativeLayouts作为此LinearLayout的子级。将这些RelativeLayout的高度设置为换行内容,这样当您将项目的可见性设置为GONE时,其高度将缩小。

现在根据你在这里给出的图像,你可以首先使用微调器,然后在下面包含一个相对布局,它将包含你想要隐藏的两个(水平)项目。然后在另一个布局中接下来的两个(水平)项目,然后是第三个布局中的图像,editText和Button。 所以你隐藏了其他人会妥善安排的相对布局。

答案 2 :(得分:1)

我建议在view下创建一个1dp高度为texView4的透明背景,然后为android:layout_below="@id/view"设置textView5属性。以下是布局的更改结果:

</RadioGroup> <!-- RadioGroup ends -->

<View
    android:id="@+id/view"
    android:layout_width="match_parent"
    android:layout_height="1dp"
    android:layout_below="@id/textView4"
    android:background="@color/transparent"/>

<!-- Changed layout_below attribute value -->
<TextView
    android:id="@+id/textView5"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/spinner1"
    android:layout_below="@id/view"
    android:layout_marginTop="25dp"
    android:text="xxx"
    android:textColor="#002f44"
    android:textSize="18sp" />

以下是textView4RadioGroup消失的布局:

enter image description here