Unwanted border at ImageView in RelativeLayout - android-layout

I have been reading similar posts but none has solved my problem.
My Activity consists of this RelativeLayout:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="#+id/content"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="#+id/initial_launch_text"
style="#style/initialLaunchTextStyle"
android:layout_width="match_parent"
android:layout_height="80dp"
android:layout_alignParentTop="true"
android:layout_margin="20dp"
android:gravity="center_horizontal|top"
android:text="Test" />
<Button
android:id="#+id/initial_launch_skip_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="10dp"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:textColor="#color/initial_launch_skip_button_text"
android:onClick="skipButtonClicked"
android:text="#string/activity_initial_launch_skip_button_skip" />
<ImageView
android:id="#+id/initial_launch_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:layout_below="#+id/initial_launch_text"
android:layout_above="#+id/initial_launch_skip_button"
android:src="#drawable/flower"
android:adjustViewBounds="true"
android:background="#000000"
android:padding="1dp" />
</RelativeLayout>
All I want is a TextView on top, a Button at the bottom and an ImageView with 1dp black border in between. But what I get is an unwanted thick black border above and below the image:
How can I get rid of that??

Change this:
<ImageView
android:id="#+id/initial_launch_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:layout_below="#+id/initial_launch_text"
android:layout_above="#+id/initial_launch_skip_button"
android:src="#drawable/flower"
android:adjustViewBounds="true"
android:background="#000000"
android:padding="1dp" />
to this:
<ImageView
android:id="#+id/initial_launch_image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:layout_below="#+id/initial_launch_text"
android:layout_above="#+id/initial_launch_skip_button"
android:src="#drawable/flower"
android:adjustViewBounds="true"
android:background="#000000"
android:layout_margin="1dp" />

I designed this layout for you but it has one issue with this type of issues why am saying this means you are going with PNG file you may get two types of layout i will show the layouts you should use JPEG then only you can get this type of layouts....
Layout code.....
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="#+id/content"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="#+id/initial_launch_text"
android:layout_width="match_parent"
android:layout_height="80dp"
android:layout_alignParentTop="true"
android:layout_margin="20dp"
android:gravity="center_horizontal|top"
android:text="Test" />
<Button
android:id="#+id/initial_launch_skip_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:onClick="skipButtonClicked"
android:text="Skip"
android:textColor="#android:color/black" />
<ImageView
android:id="#+id/initial_launch_image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="#+id/initial_launch_skip_button"
android:layout_below="#+id/initial_launch_text"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:adjustViewBounds="true"
android:background="#000000"
android:padding="5dp"
android:scaleType="fitXY"
android:src="#drawable/logo" />
</RelativeLayout>

Wrapping the ImageView with a LinearLayout using following parameters did the trick:
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true" >
<ImageView
android:id="#+id/initial_launch_image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerInParent="true"
android:layout_below="#+id/initial_launch_text"
android:layout_above="#+id/initial_launch_skip_button"
android:src="#drawable/flower"
android:background="#000000"
android:padding="1dp"
android:adjustViewBounds="true" />
</LinearLayout>

Related

ScrollView overlapping other content in RelativeLayout

I have a drawer menu defined for my app that uses a RelativeLayout as its root.
The general structure of the menu is as follows:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true"
android:focusable="true"
android:importantForAccessibility="no"
android:orientation="vertical">
<LinearLayout
android:id="#+id/linear_vert_drwr_hdr"
android:layout_width="match_parent"
android:layout_height="150dp"
android:padding="8dp"
android:background="#drawable/drawer_bg"
android:orientation="vertical">
<ImageView
... />
<TextView
... />
</LinearLayout>
<LinearLayout
android:id="#+id/manage_ids"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="#+id/linear_vert_drwr_hdr"
android:padding="8dp"
android:gravity="center_horizontal"
android:orientation="horizontal">
<TextView
... />
<ImageView
... />
</LinearLayout>
<LinearLayout
android:id="#+id/prefs_section"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="#+id/manage_ids"
android:padding="8dp"
android:gravity="center_horizontal"
android:orientation="horizontal">
<TextView
... />
</LinearLayout>
<ScrollView
android:id="#+id/vscroll_prefs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="#id/prefs_section"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:paddingBottom="8dp">
<LinearLayout
android:id="#+id/linear3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="8dp"
android:orientation="vertical"
android:layout_gravity="start">
<Switch
android:id="#+id/switch_rem_last_id"
android:layout_width="match_parent"
android:layout_height="wrap_content"
... />
... a bunch of switches ...
</LinearLayout>
</ScrollView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:gravity="center_horizontal"
android:orientation="vertical">
<ImageView
android:id="#+id/i_div_line_top"
android:layout_width="match_parent"
android:layout_height="1dp"
android:contentDescription="#string/dividing_line"
android:paddingEnd="10dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingStart="10dp"
app:srcCompat="#drawable/line_box" />
<TextView
... />
<TextView
... />
<ImageView
... />
<LinearLayout
android:id="#+id/social_links"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="horizontal">
<ImageView
... />
<ImageView
... />
</LinearLayout>
<TextView
android:id="#+id/l_app_version"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:padding="8dp"
android:text="#string/app_version"
android:textAlignment="center"
android:textColor="#000000"
android:textSize="12sp"
android:textStyle="italic" />
</LinearLayout>
</RelativeLayout>
This works fine on phones with large screens, but on smaller screens the ScrollView overlaps the LinearLayout below it.
As I'm using a RelativeLayout as the root of the layout I can't use android:layout_height="0dp" and android:layout_weight="1" instead of android:layout_height="wrap_content".
Is there another way to make the ScrollView expand to fill the available space but no more?
Got it.
I gave the LinearLayout below the ScrollView and id, then in the ScrollView I defined android:layout_above="#id/layout_below_the_scrollview".
Simple when you realise just how many android:layout... options there are!

How do I remove the extra space in this recyclerview element in Android?

I'm implementing a Recycler View in Android to create a list, but for some reason I see a space in between two elements, and I'm not able to pinpoint the error location. As to why is this happening, my guess is on the row element XML.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:cardview1="http://schemas.android.com/apk/res-auto"
android:id="#+id/row_top_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v7.widget.CardView
android:id="#+id/pos_cv"
android:layout_width="match_parent"
android:layout_height="72dp"
android:clickable="true"
cardview1:cardCornerRadius="6dp"
cardview1:cardElevation="4dp"
cardview1:cardMaxElevation="6dp">
<TextView
android:id="#+id/manager1"
android:layout_width="220dp"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:layout_marginTop="15dp"
android:text="Store Manager/Branch"
android:textSize="14sp"
android:textStyle="bold" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="70dp"
android:orientation="horizontal">
<TextView
android:id="#+id/retail"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:layout_marginTop="30dp"
android:text="Abc Retail"
android:textSize="10sp" />
<View
android:layout_width="170dp"
android:layout_height="match_parent" />
<TextView
android:id="#+id/amount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:text="25,000"
android:textColor="#color/colorDarkPink"
android:textSize="14sp"
android:textStyle="bold" />
</LinearLayout>
<TextView
android:id="#+id/address"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:layout_marginTop="50dp"
android:text="Abc Retail"
android:textSize="10sp" />
</android.support.v7.widget.CardView>
RecyclerView
<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/list_view_header_ll"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:weightSum="5"
android:background="#color/colorDarkPink"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Top 3 Performers"
android:textStyle="bold"
android:textColor="#color/colorPrimaryLight"
android:layout_weight="3"
android:textSize="16sp"
android:lines="1"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Sales"
android:textStyle="bold"
android:textColor="#color/colorPrimaryLight"
android:layout_weight="2"
android:textSize="16sp"
android:lines="1"
/>
</LinearLayout>
<android.support.v7.widget.RecyclerView
android:id="#+id/performer_lv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:divider="#color/colorTransparent"
android:layout_marginTop="16dp"
android:dividerHeight="4dp"
/>
It is because of recycler view height. Try to change recyclerview height to wrap_content.And in cardview layout in linear-layout use height wrap_content.
try this code for your cardview:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:cardview1="http://schemas.android.com/apk/res-auto"
android:id="#+id/row_top_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<android.support.v7.widget.CardView
android:id="#+id/pos_cv"
android:layout_width="match_parent"
android:layout_height="72dp"
android:clickable="true"
android:layout_marginBottom="10dp"
cardview1:cardCornerRadius="6dp"
cardview1:cardElevation="4dp"
cardview1:cardMaxElevation="6dp">
<TextView
android:id="#+id/manager1"
android:layout_width="220dp"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:layout_marginTop="15dp"
android:text="Store Manager/Branch"
android:textSize="14sp"
android:textStyle="bold" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="70dp"
android:orientation="horizontal">
<TextView
android:id="#+id/retail"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:layout_marginTop="30dp"
android:text="Abc Retail"
android:textSize="10sp" />
<View
android:layout_width="170dp"
android:layout_height="match_parent" />
<TextView
android:id="#+id/amount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:text="25,000"
android:textColor="#color/colorDarkPink"
android:textSize="14sp"
android:textStyle="bold" />
</LinearLayout>
<TextView
android:id="#+id/address"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:layout_marginTop="50dp"
android:text="Abc Retail"
android:textSize="10sp" />
</android.support.v7.widget.CardView>
</LinearLayout>
Try to decrease your values
android:layout_height="50dp"
if it will not work try to decrease values in other views

custom class marquee text restarts while changing another text view in a complex layout

I have own implementation of marquee class since the user can decide the marquee behavior (No scroll, scroll once, scroll repeat) for the text in my music app. The problem arise whenever user starts to play the songs since it continuously update timer text (id:tv_playtime) in the layout.
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:id="#+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<RelativeLayout
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:clickable="true"
android:onClick="onButtonHomeClick">
<ImageView
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
/>
<ImageView
android:layout_width="64.67dp"
android:layout_height="25.33dp"
android:layout_alignParentTop="true"
android:layout_marginLeft="2dp"
android:background="#null"
android:duplicateParentState="true"
android:scaleType="fitStart"
android:visibility="gone" />
</RelativeLayout>
<!--home buttons-->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="Media Player"
android:textColor="#color/white"
android:textSize="20dp" />
<ImageView
android:id="#+id/iv_settings_btn_passenger"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
/>
</RelativeLayout>
<!--media player home-->
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="36dp"
>
<ImageView
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:tint="#color/white"
android:visibility="invisible" />
<ImageView
android:layout_width="36dp"
android:layout_height="36dp"
/>
<ImageView
android:layout_width="36dp"
android:layout_height="36dp"
/>
<ImageView
android:layout_width="36dp"
android:layout_height="36dp"
/>
</RelativeLayout>
<!-- playing indicator-->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="370dp"
>
<RelativeLayout
android:layout_width="240dp"
android:layout_height="240dp"
android:layout_centerInParent="true"
android:layout_alignParentTop="true">
<ImageView
android:layout_width="240dp"
android:layout_height="240dp"
/>
</RelativeLayout>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="130dp"
android:layout_marginTop="5dp">
<ImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:visibility="gone"/>
<ImageView
android:layout_width="30dp"
android:layout_height="24dp"
android:visibility="gone"/>
<ImageView
android:layout_width="30dp"
android:layout_height="24dp"
android:visibility="gone"/>
<myClass.MarqueeTextView
android:id="#+id/marqueetext1"
android:layout_width="match_parent"
android:layout_height="30dp"
android:layout_centerInParent="true"
android:layout_marginLeft="60dp"
android:layout_marginRight="60dp"
android:clickable="true"
android:ellipsize="marquee"
android:focusable="true"
android:marqueeRepeatLimit="0"
android:scrollHorizontally="true"
android:singleLine="true"
android:text="Song Name"
android:textColor="#android:color/white"
android:textSize="24dp" />
<myClass.MarqueeTextView
android:id="#id/marqueetext2"
android:layout_width="match_parent"
android:layout_height="20dp"
android:layout_below="#+id/marqueetext1"
android:layout_centerInParent="true"
android:layout_centerVertical="true"
android:layout_marginLeft="60dp"
android:layout_marginRight="60dp"
android:clickable="true"
android:ellipsize="marquee"
android:focusable="true"
android:marqueeRepeatLimit="0"
android:scrollHorizontally="true"
android:singleLine="true"
android:text="Artist Name"
android:textColor="#android:color/white"
android:textSize="18dp" />
<myClass.MarqueeTextView
android:id="#id/marqueetext3"
android:layout_width="150dp"
android:layout_height="20dp"
android:layout_alignParentBottom="true"
android:layout_below="#+id/marqueetext2"
android:layout_marginLeft="60dp"
android:layout_marginTop="8dp"
android:clickable="true"
android:ellipsize="marquee"
android:focusable="true"
android:marqueeRepeatLimit="0"
android:scrollHorizontally="true"
android:singleLine="true"
android:text="Album Name"
android:textColor="#color/white"
android:textSize="18dp"/>
<TextView
android:id="#+id/tv_playtime"
android:layout_width="wrap_content"
android:layout_height="20dp"
android:layout_alignParentRight="true"
android:layout_below="#+id/marqueetext2"
android:layout_marginRight="20dp"
android:layout_marginTop="8dp"
android:text="00.00"
android:textColor="#color/white"
android:textSize="18dp" />
</RelativeLayout>
</RelativeLayout>
<!--media player tracks-->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="70dip"
android:visibility="gone">
<ImageView
android:layout_width="30dip"
android:layout_height="30dip"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_marginLeft="14dip"
/>
<myClass.MarqueeTextView
android:layout_width="match_parent"
android:layout_height="30dip"
android:layout_alignParentBottom="true"
android:layout_marginLeft="14dip"
android:layout_marginRight="5dip"
android:ellipsize="marquee"
android:marqueeRepeatLimit="0"
android:scrollHorizontally="true"
android:singleLine="true"
android:textSize="20sp"
android:textStyle="bold" />
</RelativeLayout>
<!--mood-->
<myClass.GestureView
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
<!--gestures-->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="44dp"
android:layout_alignParentBottom="true"
>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="16dp">
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="28dp"
android:layout_alignParentBottom="true"
>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="28dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="20dp"
android:layout_alignParentRight="true"
android:layout_marginLeft="50dp"
android:layout_marginRight="20dp"
android:text="00:00"
android:textColor="#android:color/white"
android:textSize="18dp"
android:visibility="gone" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginRight="7dip"
android:text="03:50"
android:textColor="#android:color/white"
android:textSize="14dp"
android:textStyle="bold"
android:visibility="gone" />
<SeekBar
style="#style/seekBarMyStyle"
android:layout_width="match_parent"
android:layout_height="16dp"
android:layout_alignParentBottom="true"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
android:maxHeight="2dp"
android:minHeight="2dp"
android:visibility="visible" />
</RelativeLayout>
</RelativeLayout>
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="26dip"
android:layout_alignParentTop="true">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:shadowColor="#color/text_shadow_color"
android:shadowDx="2.5"
android:shadowDy="2.5"
android:shadowRadius="0.01"
android:text="06:18"
android:textColor="#color/white"
android:textSize="15sp"
android:textStyle="bold" />
<ImageView
android:layout_width="26dip"
android:layout_height="match_parent"
android:layout_centerVertical="true"
/>
<ImageView
android:layout_width="26dip"
android:layout_height="match_parent"
android:layout_centerVertical="true"
android:layout_toLeftOf="#id/iv_mp_battery"
android:visibility="gone" />
<ImageView
android:layout_width="26dip"
android:layout_height="match_parent"
android:layout_centerVertical="true"
android:visibility="gone" />
<ImageView
android:layout_width="26dip"
android:layout_height="match_parent"
android:layout_centerVertical="true"
/>
<ImageView
android:layout_width="86dip"
android:layout_height="match_parent"
android:layout_centerVertical="true"
android:layout_toLeftOf="#id/iv_mp_signal"
/>
<ImageView
android:layout_width="86dip"
android:layout_height="match_parent"
android:layout_centerVertical="true"
/>
<ImageView
android:layout_width="86dip"
android:layout_height="match_parent"
android:layout_centerVertical="true"
/>
<ImageView
android:layout_width="86dip"
android:layout_height="match_parent"
android:layout_centerVertical="true"
/>
<ImageView
android:layout_width="86dip"
android:layout_height="match_parent"
android:layout_centerVertical="true"
/>
</RelativeLayout>
</RelativeLayout>
</RelativeLayout>
<LinearLayout
android:background="#color/darkbackgroundcoloralpha"
android:layout_width="match_parent"
android:layout_height="176dp"
android:layout_marginTop="50dp"
android:orientation="vertical"
android:visibility="gone" />
</FrameLayout>
I want to control the scrolling behavior of marqueetext1 here, which is working fine when the song is paused (Since timer text field is not updating).
I've tried similar problems but none of them are working for me
TextView restarts Marquee when changing another TextView in same LinearLayout
Setting of TextView stops marquee scrolling of other TextView
Android, RelativeLayout restarts Marquee-TextView when changing ImageView in same RelativeLayout
Note: Am using gestures for media player control (Next, previous, play, pause)
My assumption is its happening because of the layout since I've done a through debugging in custom Marquee class whose properties are not affecting the marquee restart here. I've override onFocusChanged, onWindowFocusChanged and isFocused methods in my derived Marquee class to make the Textview all focused.What am missing here?
My timer was overlapping on marquee text fields; so limiting the width of the timer text view solved the issue.
<TextView
android:id="#+id/tv_playtime"
android:layout_width="50dp"
android:layout_height="20dp"
android:layout_alignParentRight="true"
android:layout_below="#+id/marqueetext2"
android:layout_marginRight="20dp"
android:layout_marginTop="8dp"
android:text="00.00"
android:textColor="#color/white"
android:textSize="18dp" />

Image won't center with android:layout_centerHorizontal

my image wont center using the code "android:layout_centerHorizontal" even using gravity wont solve it. Is there any other way or are there wrong inputs in my relativelayout and scroll view.
scale layout bounds
landscape view of with scale layout bounds
screen size 768x1280 nexus api23
I am not having problems with android version 4 maybe this is api related? since my minimum sdk is android version 2?
Here is the code:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:fillViewport="true"
android:layout_height="fill_parent">
<RelativeLayout
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.capstone.jmilibraryapp.Login">
<EditText
android:layout_width="300dp"
android:layout_height="wrap_content"
android:id="#+id/etUsername"
android:hint="Enter Sr-Code"
android:layout_below="#+id/imageView3"
android:layout_centerHorizontal="true" />
<ImageView
android:layout_centerHorizontal="true"
android:layout_width="500dp"
android:layout_height="200dp"
android:src="#drawable/jmilogo"
android:id="#+id/imageView3"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<EditText
android:layout_width="300dp"
android:layout_height="wrap_content"
android:id="#+id/etPassword"
android:inputType="textPassword"
android:hint="Password"
android:layout_below="#+id/etUsername"
android:layout_centerHorizontal="true" />
<Button
android:layout_width="300dp"
android:layout_height="wrap_content"
android:id="#+id/bLogin"
android:text="Log In"
android:layout_below="#+id/etPassword"
android:layout_alignLeft="#+id/etPassword"
android:layout_alignStart="#+id/etPassword" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="Log In as Guest"
android:id="#+id/guest"
android:layout_marginTop="20dp"
android:layout_below="#+id/bLogin"
android:layout_centerHorizontal="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="Log In as Guest"
android:id="#+id/testinguser"
android:layout_marginTop="20dp"
android:layout_below="#+id/guest"
android:layout_centerHorizontal="true"
/>
</RelativeLayout>
</ScrollView>
Probably your image don´t have the same ratio of your ImageView, you can check it enabling showLayoutBounds in the developer tools in the device. You will see the real size of the imageView.
To solve that you can make you ImageView to be proportionally to your ImageView or ad a scaleType="fitCenter" to your ImageView.
Try below xml this is work with me..
<?xml version="1.0" encoding="utf-8"?>
<ScrollView 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:layout_centerHorizontal="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="20dp"
android:orientation="vertical">
<ImageView
android:id="#+id/imageView3"
android:layout_width="wrap_content"
android:layout_height="200dp"
android:layout_gravity="center_horizontal"
android:layout_weight="1"
android:scaleType="fitCenter"
android:src="#drawable/school" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="20dp"
android:layout_weight="1">
<EditText
android:id="#+id/etUsername"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:hint="Enter Sr-Code" />
<EditText
android:id="#+id/etPassword"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:layout_below="#+id/etUsername"
android:layout_centerHorizontal="true"
android:hint="Password"
android:inputType="textPassword" />
<Button
android:id="#+id/bLogin"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:layout_alignLeft="#+id/etPassword"
android:layout_alignStart="#+id/etPassword"
android:layout_below="#+id/etPassword"
android:text="Log In" />
<TextView
android:id="#+id/guest"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="#+id/bLogin"
android:layout_centerHorizontal="true"
android:layout_marginTop="20dp"
android:text="Log In as Guest"
android:textAppearance="?android:attr/textAppearanceSmall"/>
<TextView
android:id="#+id/testinguser"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="#+id/guest"
android:layout_centerHorizontal="true"
android:layout_marginTop="20dp"
android:text="Log In as Guest"
android:textAppearance="?android:attr/textAppearanceSmall"/>
</RelativeLayout>
</LinearLayout>
</ScrollView>

Android relative layout doesn't scroll

I have a relative layout in my xml file inside which I have another relative layout which has all my content. My Inner relative layout is loaded with content that comes from my database.
Also I have a edittext and button at bottom for adding comments.
Now the problem is that my inner relative layout doesn't scroll when the content is more but all the contents get hidden inside the bottom edit text and button.
Here is my xml.
<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="wrap_content"
android:background="#color/BG"
android:paddingTop="10dp" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:background="#FFFFFF"
android:paddingLeft="15dp"
android:paddingRight="15dp"
android:paddingBottom="15dp"
android:scrollbars="vertical" >
<TextView
android:id="#+id/discTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_marginTop="20dp"
android:text="Title"
android:textColor="#77d3f1"
android:textSize="18sp" />
<TextView
android:id="#+id/discCategory"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignRight="#+id/discTitle"
android:layout_below="#+id/discTitle"
android:layout_marginTop="20dp"
android:text="Category"
android:textColor="#77d3f1"
android:textSize="14sp" />
<TextView
android:id="#+id/discDescription"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignRight="#+id/discCategory"
android:layout_below="#+id/discCategory"
android:layout_marginTop="20dp"
android:text="Decsription"
android:textColor="#908484"
android:textSize="16sp" />
<TextView
android:id="#+id/discTime"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignRight="#+id/discDescription"
android:layout_below="#+id/discDescription"
android:layout_marginTop="20dp"
android:text="yyyy mm dd hh:mm:ss"
android:textSize="10sp" />
</RelativeLayout>
<EditText
android:id="#+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_marginRight="60dp"
android:background="#drawable/commentbg"
android:ems="10"
android:hint="Type a comment..."
android:inputType="textMultiLine"
android:minHeight="40dp"
android:paddingLeft="10dp"
android:textStyle="italic" >
<requestFocus />
</EditText>
<Button
android:id="#+id/button1"
android:layout_width="61dp"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:background="#drawable/commentbg"
android:minHeight="40dp"
android:text="Send" />
</RelativeLayout>
Now I want the inner relative layout’s height to occupy the whole screen and has to be
scrollable when content is more.Have a look at the image below.
Thanks in advance.
Wrap it in ScrollView
<ScrollView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="#+id/scroll_view_layout">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:background="#FFFFFF"
android:paddingLeft="15dp"
android:paddingRight="15dp"
android:paddingBottom="15dp"
android:scrollbars="vertical" >
<TextView
android:id="#+id/discTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_marginTop="20dp"
android:text="Title"
android:textColor="#77d3f1"
android:textSize="18sp" />
<TextView
android:id="#+id/discCategory"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignRight="#+id/discTitle"
android:layout_below="#+id/discTitle"
android:layout_marginTop="20dp"
android:text="Category"
android:textColor="#77d3f1"
android:textSize="14sp" />
<TextView
android:id="#+id/discDescription"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignRight="#+id/discCategory"
android:layout_below="#+id/discCategory"
android:layout_marginTop="20dp"
android:text="Decsription"
android:textColor="#908484"
android:textSize="16sp" />
<TextView
android:id="#+id/discTime"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignRight="#+id/discDescription"
android:layout_below="#+id/discDescription"
android:layout_marginTop="20dp"
android:text="yyyy mm dd hh:mm:ss"
android:textSize="10sp" />
</RelativeLayout>
<EditText
android:id="#+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_marginRight="60dp"
android:background="#drawable/commentbg"
android:ems="10"
android:hint="Type a comment..."
android:inputType="textMultiLine"
android:minHeight="40dp"
android:paddingLeft="10dp"
android:textStyle="italic" >
<requestFocus />
</EditText>
<Button
android:id="#+id/button1"
android:layout_width="61dp"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:background="#drawable/commentbg"
android:minHeight="40dp"
android:text="Send" />
</RelativeLayout>
</ScrollView>
To scroll content you need to add ScrollView. ScrollView will be parent of the layout that you want to scroll.
http://developer.android.com/reference/android/widget/ScrollView.html

Resources