Search code examples
androidandroid-layoutxamarin.androidandroid-relativelayout

RelativeLayout takes more space than needed


I am working on a basic audio view for an android app (xamarin.android), i want to achieve the following result:

But instead i am getting this ugly result (ignore the other anomalies, focus on the layout):

The bottom relativeLayout (the one that holds the buttons) seems t get more space that actually needed, when i set the top RelativeLayout (the image holder) to match_parent the bottom RelativeLayout disappeared entirely even tho its high is set to wrap_content.

Here is my view's layout, what i am doing wrong?

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:local="http://schemas.android.com/apk/res-auto"
android:fitsSystemWindows="true"
android:id="@+id/top_parent"
android:layout_width="match_parent"
android:layout_height="match_parent">
<include
    layout="@layout/Toolbar"
    android:id="@+id/toolbar_content" />
<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/white"
    android:layout_below="@id/toolbar_content"
    android:id="@+id/gridLayout1">
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/black"
        android:id="@+id/cover_layout"
        android:layout_marginBottom="0.0dp">
        <ImageView
            android:layout_width="500dp"
            android:layout_height="400dp"
            android:id="@+id/imageview_cover"

            android:background="@color/gray"
            android:layout_centerHorizontal="true"
            android:layout_centerInParent="true"
            android:layout_centerVertical="true" />
        <LinearLayout
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/linearLayout1"
            android:layout_alignParentRight="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true">
            <TextView
                android:id="@+id/textview_title"
                android:gravity="left"
                android:textColor="@color/white"
                android:textStyle="bold"
                android:text="Audio Book Title"
                android:textSize="@dimen/text_very_huge"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:singleLine="true" />
            <TextView
                android:id="@+id/textview_author"
                android:gravity="left"
                android:textColor="@color/colorAccent"
                android:text="Author"
                android:textSize="@dimen/text_small"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:singleLine="true" />
        </LinearLayout>
    </RelativeLayout>
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/cover_layout"
        android:id="@+id/relativeLayout2"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentLeft="true"
        android:paddingBottom="8dp"
        android:paddingTop="8dp"
        android:background="@color/white"
        android:layout_marginTop="0.0dp">
        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/relativeLayout3"
            android:layout_alignParentRight="true"
            android:layout_alignParentLeft="true"
            android:layout_marginTop="@dimen/element_margin_tiny"
            android:layout_marginBottom="@dimen/element_margin_tiny">
            <TextView
                android:text="Position"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/textview_position"
                android:gravity="center"
                android:layout_marginLeft="@dimen/element_margin_large"
                android:textColor="@color/black"
                android:layout_centerVertical="true" />
            <SeekBar
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_toRightOf="@+id/textview_position"
                android:id="@+id/player_seekbar"
                android:layout_toLeftOf="@+id/textview_duration"
                android:clickable="true"
                style="@style/GreenSeekBar"
                android:layout_centerVertical="true" />
            <TextView
                android:text="Duration"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/textview_duration"
                android:layout_alignParentRight="true"
                android:layout_alignBottom="@+id/seekBar1"
                android:layout_alignTop="@+id/seekBar1"
                android:gravity="center"
                android:layout_marginRight="@dimen/element_margin_large"
                android:textColor="@color/black"
                android:layout_centerVertical="true" />
        </RelativeLayout>
        <LinearLayout
            android:layout_width="match_parent"
            android:id="@+id/relativeLayout5"
            android:layout_below="@id/relativeLayout3"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true">
            <ToggleButton
                android:src="@drawable/toggle_sound"
                android:id="@+id/btnSound"                  
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:textOff=" "
                android:textOn=" "
                android:layout_weight="2"
                android:scaleType="center"
                android:paddingLeft="@dimen/element_margin_tiny" />
            <ImageButton
                android:layout_width="40dp"
                android:layout_height="40dp"
                android:id="@+id/btnPrevious"
                android:background="@null"
                android:src="@drawable/button_previous"
                android:scaleType="center"
                android:layout_toRightOf="@+id/btnSound"
                android:layout_weight="2" />
            <ToggleButton
                android:layout_width="50dp"
                android:layout_height="50dp"
                android:id="@+id/btnPlayPause"
                android:src="@drawable/togglebutton_playpause"
                android:layout_centerVertical="true"
                android:scaleType="center"
                android:textOff=" "
                android:textOn=" "
                android:layout_toRightOf="@+id/btnPrevious"
                android:layout_toLeftOf="@+id/btnNext"
                android:layout_weight="2" />
            <ImageButton
                android:layout_width="40dp"
                android:layout_height="40dp"
                android:id="@+id/btnNext"
                android:background="@null"
                android:src="@drawable/button_next"
                android:scaleType="center"
                android:layout_centerVertical="true"
                android:layout_toLeftOf="@+id/btnRepeat"
                android:layout_weight="2" />
            <ToggleButton
                android:src="@drawable/toggle_playlist"
                android:id="@+id/btnRepeat"
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:layout_centerVertical="true"
                android:textOff=" "
                android:textOn=" "                  
                android:scaleType="center"
                android:layout_weight="2" />
        </LinearLayout>
    </RelativeLayout>
</RelativeLayout>


Solution

  • you need to decrease your imageView size. And also you need to change your main layout to LinearLayout. Try below solution and it will work for you.

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/gridLayout1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    
    <RelativeLayout
        android:id="@+id/cover_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_above="@+id/relativeLayout2"
        android:layout_alignParentTop="true"
        android:layout_marginBottom="0.0dp" >
    
    
        <ImageView
            android:id="@+id/imageview_cover"
            android:layout_width="250dp"
            android:layout_height="250dp"
            android:layout_centerHorizontal="true"
            android:layout_centerInParent="true"
            android:layout_centerVertical="true"
            android:layout_marginBottom="10dp"
            android:layout_marginTop="10dp"
            android:background="@color/gray" />
    
        <LinearLayout
            android:id="@+id/linearLayout1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true"
            android:orientation="vertical">
    
            <TextView
                android:id="@+id/textview_title"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="left"
                android:singleLine="true"
                android:text="Audio Book Title"
                android:textColor="@color/white"
                android:textSize="16sp"
                android:textStyle="bold" />
    
            <TextView
                android:id="@+id/textview_author"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="left"
                android:singleLine="true"
                android:text="Author"
                android:textColor="@color/colorAccent"
                android:textSize="12sp" />
        </LinearLayout>
    </RelativeLayout>
    
    <RelativeLayout
        android:id="@+id/relativeLayout2"
        android:layout_width="match_parent"
        android:layout_height="80dp"
        android:gravity="center"
        android:layout_alignParentBottom="true">
    
        <RelativeLayout
            android:id="@+id/relativeLayout3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_above="@+id/relativeLayout5"
            android:layout_alignParentLeft="true"
            android:layout_alignParentRight="true"
            android:layout_marginBottom="@dimen/element_margin_tiny"
            android:layout_marginTop="@dimen/element_margin_tiny">
    
            <TextView
                android:id="@+id/textview_position"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerVertical="true"
                android:layout_marginLeft="@dimen/element_margin_large"
                android:layout_marginLeft="@dimen/element_margin_large"
                android:gravity="center"
                android:text="Position"
                android:textColor="@color/black" />
    
            <SeekBar
                android:id="@+id/player_seekbar"
                style="@style/GreenSeekBar"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_toLeftOf="@+id/textview_duration"
                android:layout_toRightOf="@+id/textview_position"
                android:clickable="true" />
    
            <TextView
                android:id="@+id/textview_duration"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_centerVertical="true"
                android:layout_marginRight="@dimen/element_margin_large"
                android:gravity="center"
                android:text="Duration"
                android:textColor="@color/black" />
        </RelativeLayout>
    
        <LinearLayout
            android:id="@+id/relativeLayout5"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true">
    
            <ToggleButton
                android:id="@+id/btnSound"
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:layout_weight="2"
                android:paddingLeft="@dimen/element_margin_tiny"
                android:scaleType="center"
                android:src="@drawable/toggle_sound"
                android:textOff=" "
                android:textOn=" " />
    
            <ImageButton
                android:id="@+id/btnPrevious"
                android:layout_width="40dp"
                android:layout_height="40dp"
                android:layout_weight="2"
                android:background="@null"
                android:scaleType="center"
                android:src="@drawable/button_previous" />
    
            <ToggleButton
                android:id="@+id/btnPlayPause"
                android:layout_width="50dp"
                android:layout_height="50dp"
                android:layout_weight="2"
                android:scaleType="center"
                android:src="@drawable/togglebutton_playpause"
                android:textOff=" "
                android:textOn=" " />
    
            <ImageButton
                android:id="@+id/btnNext"
                android:layout_width="40dp"
                android:layout_height="40dp"
                android:layout_centerVertical="true"
                android:layout_toLeftOf="@+id/btnRepeat"
                android:layout_weight="2"
                android:background="@null"
                android:scaleType="center"
                android:src="@drawable/button_next" />
    
            <ToggleButton
                android:id="@+id/btnRepeat"
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:layout_centerVertical="true"
                android:layout_weight="2"
                android:scaleType="center"
                android:src="@drawable/toggle_playlist"
                android:textOff=" "
                android:textOn=" " />
        </LinearLayout>
    </RelativeLayout>