it-swarm.com.de

Android: Element unter ein anderes Element legen und am unteren Bildschirmrand ausrichten

Ich versuche, ein Layout zu definieren, in dem ein ImageView am unteren Bildschirmrand und auch unter einem GridView ausgerichtet ist, um Überlappungen zu vermeiden.

Dies führt jedoch dazu, dass ImageView direkt unter GridView eingestellt wird, aber nicht am unteren Bildschirmrand ausgerichtet ist.

Kann dies mit einem anderen Layout gelöst werden?

<?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

So würde ich das machen:

1 - Legen Sie die ImageView auf die Unterseite
2 - Legen Sie das GridView ÜBER.

<!-- 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"
/>

Auf diese Weise habe ich die Relativität von Elementen in einem RelativLayout verwendet

[EDIT]

Nur zum Spaß ... Ich habe dein GANZES LAYOUT optimiert.
Bitte beachten Sie, wie gleiches Design durch viele Layouts weniger erreicht wird.

<?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>

Und das habe ich im Grafikeditor bekommen (ich habe einige Bilder und einige Texte eingefügt, um die TextViews zu identifizieren):

enter image description here

23
Fantômas

Gelöst durch Setzen des ImageView in ein RelativeLayout, Setzen des layout_below Element im RelativeLayout und das alignParentBottom Element von ImageView:

<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