我无法将按钮放在布局的底部

时间:2012-07-13 16:02:02

标签: android xml

我正在尝试将按钮放到布局的底部,它只是不起作用...... 该按钮在应该位于其上方的图像上自我显示。

这是xml代码:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/ScrollView01"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:fillViewport="true"
    android:layout_gravity="center"
     >
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
         >

        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:layout_marginLeft="28dp"
            android:layout_marginTop="32dp" />

        <TextView
            android:id="@+id/txtAppName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignTop="@+id/imageView1"
            android:layout_marginLeft="22dp"
            android:layout_toRightOf="@+id/imageView1"
            android:text=""
            android:textSize="36px"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/txtAppAuthor"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/txtAppName"
            android:layout_below="@+id/txtAppName"
            android:layout_marginTop="5px"
            android:text=""
            android:textSize="24px"
            android:textStyle="normal" />


        <TextView
            android:id="@+id/txtAppDesc"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/imageView1"
            android:layout_below="@+id/imageView1"
            android:layout_marginTop="20dp"
            android:maxHeight="350px"
            android:text=""
            android:width="600px"
            android:maxLines="10"
            android:scrollbars = "vertical"
             /> 

        <ImageView
            android:id="@+id/imageView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/txtAppDesc"
            android:layout_below="@+id/txtAppDesc"
            android:layout_marginTop="30dp" />

        <ImageView
            android:id="@+id/imageView3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignTop="@+id/imageView2"
            android:layout_toRightOf="@+id/imageView2" />


        <ImageView
            android:id="@+id/imageView4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignTop="@+id/imageView3"
            android:layout_toRightOf="@+id/imageView3"
            android:visibility="visible" />


        <Button
            android:id="@+id/btnInstall"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:layout_alignBottom="@+id/imageview4"
            android:text="Download &amp; Install" />

    </RelativeLayout>
</ScrollView>

结果是:

enter image description here

Thanx upfront。

3 个答案:

答案 0 :(得分:2)

您使用了android:layout_alignBottom="@+id/imageview4"

这意味着您将按钮底部与图像底部对齐。

您必须使用android:layout_below="@+id/imageview4"

编辑:我不是说这是最好的解决方案,因为有多种布局(用于优化......)但这应该有效:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/ScrollView01"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:fillViewport="true"
            android:layout_gravity="center"
        >
    <LinearLayout android:layout_width="match_parent"
                  android:layout_height="match_parent"
                  android:orientation="vertical">


        <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:gravity="center"
                >

            <ImageView
                    android:id="@+id/imageView1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentTop="true"
                    android:layout_marginLeft="28dp"
                    android:layout_marginTop="32dp"/>

            <TextView
                    android:id="@+id/txtAppName"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignTop="@+id/imageView1"
                    android:layout_marginLeft="22dp"
                    android:layout_toRightOf="@+id/imageView1"
                    android:text=""
                    android:textSize="36px"
                    android:textStyle="bold"/>

            <TextView
                    android:id="@+id/txtAppAuthor"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignLeft="@+id/txtAppName"
                    android:layout_below="@+id/txtAppName"
                    android:layout_marginTop="5px"
                    android:text=""
                    android:textSize="24px"
                    android:textStyle="normal"/>


            <TextView
                    android:id="@+id/txtAppDesc"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignLeft="@+id/imageView1"
                    android:layout_below="@+id/imageView1"
                    android:layout_marginTop="20dp"
                    android:maxHeight="350px"
                    android:text=""
                    android:width="600px"
                    android:maxLines="10"
                    android:scrollbars="vertical"
                    />

            <ImageView
                    android:id="@+id/imageView2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignLeft="@+id/txtAppDesc"
                    android:layout_below="@+id/txtAppDesc"
                    android:layout_marginTop="30dp"/>

            <ImageView
                    android:id="@+id/imageView3"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignTop="@+id/imageView2"
                    android:layout_toRightOf="@+id/imageView2"/>


            <ImageView
                    android:id="@+id/imageView4"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignTop="@+id/imageView3"
                    android:layout_toRightOf="@+id/imageView3"
                    android:visibility="visible"/>

        </RelativeLayout>


        <Button
                android:id="@+id/btnInstall"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:text="Download &amp; Install"/>
    </LinearLayout>
</ScrollView>

我添加了一个线性布局,其中放置了内容和按钮。 希望这会奏效。

答案 1 :(得分:1)

您是否只想让按钮结束的图像缩小以便为它腾出空间?如果是这样,您需要将包含该图像的Imageview作为相对布局中的最后一项。它将为除图像之外的所有内容分配空间,然后将剩余空间分配给图像,这就是它需要最后的原因。

另外,我建议给你的imageViews提供比“imageView#”更多信息的名称,因为它很难分辨出哪个是哪个。

答案 2 :(得分:0)

您可能希望将图像包装在Horizo​​ntalScrollView中,以保持所有图像的完整高度和宽度。我更改了很多ViewGroups的宽度和高度来容纳Horizo​​ntalScrollView,最后我在图片下面设置了Button:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/ScrollView01"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:fillViewport="true" >

    <RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center" >

        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:layout_marginLeft="28dp"
            android:layout_marginTop="32dp" />

        <TextView
            android:id="@+id/txtAppName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignTop="@+id/imageView1"
            android:layout_marginLeft="22dp"
            android:layout_toRightOf="@+id/imageView1"
            android:text=""
            android:textSize="36px"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/txtAppAuthor"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/txtAppName"
            android:layout_below="@+id/txtAppName"
            android:layout_marginTop="5px"
            android:text=""
            android:textSize="24px"
            android:textStyle="normal" />

        <TextView
            android:id="@+id/txtAppDesc"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/imageView1"
            android:layout_below="@+id/imageView1"
            android:layout_marginTop="20dp"
            android:maxHeight="350px"
            android:maxLines="10"
            android:scrollbars="vertical"
            android:text=""
            android:width="600px" />

        <HorizontalScrollView
            android:id="@+id/images"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/txtAppDesc"
            android:layout_marginTop="30dp" >

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal" >

                <ImageView
                    android:id="@+id/imageView2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" />

                <ImageView
                    android:id="@+id/imageView3"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" />

                <ImageView
                    android:id="@+id/imageView4"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" />

            </LinearLayout>
        </HorizontalScrollView>

        <Button
            android:id="@+id/btnInstall"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/images"
            android:layout_centerHorizontal="true"
            android:text="Download &amp; Install" />
    </RelativeLayout>

</ScrollView>

了解在ScrollView中嵌套Horizo​​ntalScrollView(或反之亦然)并不能在x&amp ;;中创建平滑的滚动效果。 y方向同时。但您可以按照此处的讨论创建此效果:Scrollview vertical and horizontal in android