HukeLau_DABA
HukeLau_DABA

Reputation: 2528

how do I align a view on top of 1 of 2 views

Click on image, replace with relativelayout as shown below. This bottom section should be below the listview. Problem is I dont see the listview in the design preview of my IDE.

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

<LinearLayout
    android:id="@+id/bottomSection"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="bottom"
    android:orientation="vertical">

    <ImageView
        android:id="@+id/icon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="end"
        android:onClick="switch"
        android:src="@drawable/ic_edit"
        android:visibility="visible" />

    <RelativeLayout
        android:id="@+id/rl"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:visibility="gone">

    </RelativeLayout>
</LinearLayout>

<ListView
    android:id="@+id/lv"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_above="@id/bottomSection" />
</RelativeLayout>

Upvotes: 0

Views: 103

Answers (2)

Hareshkumar Chhelana
Hareshkumar Chhelana

Reputation: 24848

Try this way,hope this will help you to solve your problem.

In you xml vertical LinearLayout as parent layout and A,B and ListView as child,given weight to ListView so it can adjust height even if no A or B visible and in case of shown A or B you have to implement on click of both in activity like when A show and click show B and hide A and vise versa.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <LinearLayout
        android:id="@+id/linearLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:visibility="visible">

        </LinearLayout>

    <LinearLayout
        android:id="@+id/linearLayout2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:visibility="gone">

    </LinearLayout>
    <ListView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"/>
</LinearLayout>

Upvotes: 0

MysticMagicϡ
MysticMagicϡ

Reputation: 28823

You can put the two linearlayouts in another linearlayout, And use parent linearlayout for reference in Listview.

Like this:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    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"
    tools:context="com.example.tempproj.MainActivity" >

    <LinearLayout
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <LinearLayout
            android:id="@+id/lay1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:visibility="visible" >
        </LinearLayout>

        <LinearLayout
            android:id="@+id/lay2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:visibility="gone" >
        </LinearLayout>
    </LinearLayout>

    <ListView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@id/container" />

</RelativeLayout>

So your Listview will be on top of container LinearLayout, regardless of which linearlayout is visible inside that. Hope it helps.

Upvotes: 1

Related Questions