web-dev-qa-db-ja.com

Android:要素を別の要素の下に配置し、画面の下部に配置する

重複を避けるために、ImageViewが画面の下部とGridViewの下に配置されるレイアウトを定義しようとしています。

ただし、これによりImageViewGridViewのすぐ下に設定されますが、画面の下部に揃えられません。

これは、異なる種類のレイアウトを使用して解決できますか?

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="match_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:background="@drawable/background"
    Android:orientation="vertical">

    <RelativeLayout 
        Android:id="@+id/gs_top_text_container"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:layout_alignParentTop="true"
        Android:paddingBottom="30dp">

        <RelativeLayout 
            Android:id="@+id/gs_top_sub_container"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:layout_centerHorizontal="true"
            Android:paddingBottom="30dp">

            <TextView
                Android:id="@+id/text_l"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:layout_alignParentLeft="true"/>

            <TextView
                Android:id="@+id/text_t"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:layout_alignParentRight="true"/>

        </RelativeLayout>

        <RelativeLayout 
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:layout_below="@id/gs_top_sub_container"
            Android:layout_centerHorizontal="true">

            <TextView
                Android:id="@+id/text1"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"/>

            <TextView
                Android:id="@+id/text2"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:layout_toRightOf="@id/text1"/>

        </RelativeLayout>



    </RelativeLayout>



    <GridView
        Android:id="@+id/gs_grid_view"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_below="@id/gs_top_text_container"
        Android:descendantFocusability="blocksDescendants"
        Android:horizontalSpacing="2dp"
        Android:verticalSpacing="2dp"
        Android:numColumns="3"
        Android:gravity="center"
        Android:paddingBottom="10dp"
        Android:paddingTop="10dp" />


    <ImageView
        Android:id="@+id/gs_bottom_logo"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:layout_below="@id/gs_grid_view"
        Android:layout_alignParentBottom="true"
        Android:adjustViewBounds="true"
        Android:maxWidth="200dp"
        Android:paddingLeft="20dp"
        Android:paddingRight="20dp"/>

</RelativeLayout>
23
liarspocker

これは私がそれをする方法です:

1-ImageViewを下に配置する
2-GridViewを上に配置します。

<!-- First anchor this View to the bottom -->
<ImageView
    Android:id="@+id/gs_bottom_logo"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:layout_alignParentBottom="true"
    Android:adjustViewBounds="true"
    Android:maxWidth="200dp"
    Android:paddingLeft="20dp"
    Android:paddingRight="20dp"
/>
<!-- Then put this View ABOVE the ImageView -->
<GridView
    Android:id="@+id/gs_grid_view"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:layout_below="@id/gs_top_text_container"
    Android:layout_above="@id/gs_bottom_logo"
    Android:descendantFocusability="blocksDescendants"
    Android:horizontalSpacing="2dp"
    Android:verticalSpacing="2dp"
    Android:numColumns="3"
    Android:gravity="center"
    Android:paddingBottom="10dp"
    Android:paddingTop="10dp"
/>

このように、私はRelativeLayoutの要素のrelativityを使用しました

[編集]

ただ楽しみのために...私はあなたの全体のレイアウトを最適化しました。
同じデザイン多くのレイアウトを減らすを使用して達成される方法に注意してください。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="match_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:background="@drawable/background"
    >
    <TextView
        Android:id="@+id/text_l"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_alignParentLeft="true"
        Android:layout_alignParentTop="true"
        Android:paddingBottom="30dp"
    />
    <TextView
        Android:id="@+id/text_t"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_alignParentRight="true"
        Android:layout_alignParentTop="true"
        Android:paddingBottom="30dp"
    />
    <!--
        This container is (unfortunately) still needed, to make these two
        textViews horizontally centered... :(
    -->
    <RelativeLayout
        Android:id="@+id/rlCentering"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_below="@id/text_l"
        Android:layout_centerHorizontal="true"
        Android:paddingBottom="30dp"
        >
        <TextView
            Android:id="@+id/text1"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
        />
        <TextView
            Android:id="@+id/text2"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:layout_toRightOf="@id/text1"
        />
    </RelativeLayout>

    <!-- First, anchor this View to the bottom -->
    <ImageView
        Android:id="@+id/gs_bottom_logo"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:layout_alignParentBottom="true"
        Android:adjustViewBounds="true"
        Android:maxWidth="200dp"
        Android:paddingLeft="20dp"
        Android:paddingRight="20dp"
    />
    <!-- Then put this View ABOVE the ImageView -->
    <GridView
        Android:id="@+id/gs_grid_view"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_below="@id/rlCentering"
        Android:layout_above="@id/gs_bottom_logo"
        Android:descendantFocusability="blocksDescendants"
        Android:horizontalSpacing="2dp"
        Android:verticalSpacing="2dp"
        Android:numColumns="3"
        Android:gravity="center"
        Android:paddingBottom="10dp"
        Android:paddingTop="10dp"
    />
</RelativeLayout>

そして、これはグラフィカルエディターで取得したものです(TextViewを識別するために、いくつかの画像といくつかのテキストを配置しました)。

enter image description here

23
Fantômas

ImageViewをRelativeLayoutに設定を設定し、layout_below相対レイアウトのアイテムとImageViewのalignParentBottomアイテム:

<RelativeLayout 
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:layout_below="@id/gs_grid_view">
<ImageView
    Android:id="@+id/gs_bottom_logo"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:layout_alignParentBottom="true"
    Android:adjustViewBounds="true"
    Android:maxWidth="200dp"
    Android:paddingLeft="20dp"
    Android:paddingRight="20dp"/>
</RelativeLayout>
3
liarspocker