Scrolling in RelativeLayout - java

I have textview and listview in the RelativeLayout. How can I do scroll this textview when I scrolling listview? I want that textview does not to hang out from the top when I'm scrolling listview
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="top"
android:padding="10dp"
android:paddingBottom="0dp"
android:id="#+id/info_presents_surveys"
android:text="#string/info_presents_surveys"
android:textColor="#color/empty_color"
android:background="#color/color_gray"/>
<android.support.v4.widget.SwipeRefreshLayout
android:id="#+id/refresh"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="#id/info_presents_surveys">
<ListView
android:id="#+id/list_view_surveys"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:divider="#color/members_speakers.divider"
android:dividerHeight="1dp" />
</android.support.v4.widget.SwipeRefreshLayout>

The TextView is not within a scrolling component, it's within the parent layout RelativeLayout which does not scroll.
In order for it to scroll, you'll have to put it within a ScrollView (or similar scrolling component).
So it should be:
<ScrollView>
<RelativeLayout>
<TextView>
<SwipeRefreshLayout>
<ListView/>
</SwipeRefreshLayout>
</RelativeLayout>
</ScrollView>

Related

ScrollView not scrolling down

I am building an application and the ScrollView function is not scrolling down (not working), it only views a number of buttons and the rest of the buttons are not there!
It should view the rest of the buttons when I scroll down (buttons are retrieved from a loop)! but unfortunately it doesn't work!
Here is the code:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:animateLayoutChanges="true"
android:orientation="vertical"
android:paddingLeft="#dimen/activity_horizontal_margin"
android:paddingTop="#dimen/activity_vertical_margin"
android:paddingRight="#dimen/activity_horizontal_margin"
android:paddingBottom="#dimen/activity_vertical_margin"
tools:context=".viewdevices">
<TextView
android:id="#+id/username"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:paddingTop="300dp"
android:text="#string/username"
android:textAlignment="center"
android:textSize="30dp"
android:textStyle="bold"
android:typeface="serif"
/>
<ScrollView
android:id="#+id/scroll_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:animateLayoutChanges="true"
android:fillViewport="true"
android:fitsSystemWindows="true"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="#+id/username"
>
<LinearLayout
android:id="#+id/scroll_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:animateLayoutChanges="true"
android:orientation="vertical">
<Button
android:id="#+id/devicename"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="" />
</LinearLayout>
</ScrollView>
</LinearLayout>
can anyone figure what I did wrong?
The issue with the ScrollView not scrolling might be due to the height of the ScrollView and the LinearLayout inside it. The height of the ScrollView is set to "match_parent" which means it will take up the full height of the parent layout. The height of the LinearLayout inside the ScrollView is set to "wrap_content" which means it will only be as tall as its contents.
If the number of buttons inside the LinearLayout is more than what can be displayed on the screen, the ScrollView will not be able to scroll as its height is already taking up the full height of the parent layout.
To resolve this, you can change the height of the LinearLayout inside the ScrollView to "match_parent". This will make the height of the LinearLayout expand to accommodate all its contents and the ScrollView will be able to scroll.
Here's the modified code:
<LinearLayout
android:id="#+id/scroll_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:animateLayoutChanges="true"
android:orientation="vertical">

Making LinearLayout with ListView scrollable

I have a linear layout that looks something like this:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="#+id/linear_layout"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#color/white"
android:orientation="vertical"
tools:context=".activities.EnrolStudentFormActivity">
<include
layout="#layout/app_bar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:fitsSystemWindows="true" />
<ListView
android:id="#+id/list_view
android:layout_width="match_pare
android:layout_height="wrap_cont
android:divider="#null"
android:dividerHeight="0dp" />
</LinearLayout>
With a few ImageViews, TextInputLayouts and TextInputEditTexts in between. I want to make this layout scrollable. I tried to make it scrollable with ScrollView and NestedScrollView, but both of them messed the ListView up.
I am also changing the ListView contents dynamically and I have a few TextInputEditTexts inside TextInputLayouts inside the ListView. Resizing the ListView doesn't help much, and I cannot click on the TextInputEditText inside the ListView. It seems that the ScrollView captures the touch input.
Are there any workarounds that will let me have a ListView inside a ScrollView or make the linear layout scrollable while making the TextInputEditText inside the ListView usable?
Use RecyclerView instead of ListView and add NestedScrollView on top:
<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="
http://schemas.android.com/apk/res/android"
xmlns:http="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="#+id/linear_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#color/white"
android:orientation="vertical"
tools:context=".activities.EnrolStudentFormActivity">
<include
layout="#layout/app_bar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:fitsSystemWindows="true" />
<android.support.v7.widget.RecyclerView
android:id="#+id/list_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:divider="#null"
android:dividerHeight="0dp" />>
</LinearLayout>
and finally in your code add:
RecyclerView.setNestedScrollingEnabled(false);

How can I use listview inside a scrollview in android?

This is the image I want in my application:
I tried using listview inside a scrollview but the problem is that I am not able to stretch listview to its full size. Can anyone tell me how can I do this??
You can use your recyclerview as below example :
<android.support.v4.widget.NestedScrollView
android:id="#+id/nestedScroll"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_collapseMode="pin">
<!-- Some views-->
</LinearLayout>
<android.support.v7.widget.RecyclerView
android:id="#+id/recycler_bubhub_comment_list"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
You can use below properties in recyclerview if you need both layout to scroll. Otherwise it would work as single scrolling view. These properties allows Recyclerview to scroll inside NestedScrollView
app:layoutManager="android.support.v7.widget.LinearLayoutManager"
app:layout_behavior="#string/appbar_scrolling_view_behavior"

How to center a button at the bottom of a FrameLayout in a RelativeLayout

This is my xml code:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<FrameLayout
android:id="#+id/nero"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="vertical">
<Button
android:layout_width="130dp"
android:layout_height="130dp" />
....
</RelativeLayout>
<FrameLayout
android:id="#+id/imprint"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom|center_horizontal">
<Button
android:layout_width="230dp"
android:layout_height="230dp" />
</FrameLayout>
</LinearLayout>
I want to place the FrameLayout at the bottom of the LinearLayout and all elements in the FrameLayout should be centered. How can I do that?
In Frame Layout Use Layout_Gravity will work
android:layout_gravity="bottom|center"
Also Use Bottom margin to make it in perfect location from bottom.
android:layout_marginBottom="20dp"
To center the button inside the FrameLayout you should add:
android:layout_gravity="center"
inside the Button or:
android:gravity="center"
inside the FrameLayout. And btw, if a Button is the only child why are you using a FrameLayout?
I don't know exactly if that would solve the issue, but you can use "wrap_content" as your layout_width in your FrameLayout at the bottom. That would center the FrameLayout, so the views which are in the layout would get centered.

Making android listview layout scrollable

I have an xml file that has the layout in ASCII form:
---------------
| ImageView
--------------
| TextView
--------------
| List...
--------------
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:myapp="http://schemas.android.com/apk/res/com.some.app"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView
android:id="#+id/MovieCover"
android:layout_width="100dip"
android:layout_height="100dip"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="16sp"
android:padding="10dp"
android:id="#+id/TextHeader"
android:background="#000000">
</TextView>
<ListView android:id="#+id/ListView02" android:layout_height="wrap_content"
android:layout_width="fill_parent">
</ListView>
</LinearLayout>
I'm having a problem displaying the layout when my ImageView and TextView takes up more than 3/4 of the screen. How do I make ImageView and TextView scrollable with the ListView that is being displayed? At this point of time, only the ListView to be scrolled and I want the entire layout to be scrollable as though they are one page on its own.
How can I do that?
You can use <ScrollView> as your layout container
something along the line of
<ScrollView>
<LinearLayout>
// your layout here
</LinearLayout>
</ScrollView>
the reason why we need the LinearLayout inside is that ScrollView can only have one direct child
Butter to use two LinearLayout with layoutweight="1" and put ScrollView in one and listview in other
<LinearLayout android:layout_weight="1"
android:layout_height="fill_parent" android:layout_width="fill_parent">
<ScrollView android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<!-- scroll view content -->
</LinearLayout>
</ScrollView>
</LinearLayout>
<LinearLayout android:layout_weight="1"
android:layout_height="fill_parent" android:layout_width="fill_parent">
<ListView android:id="#+id/ListView02" android:layout_height="wrap_content"
android:layout_width="fill_parent">
</ListView>
</LinearLayout>
ListView has addtoHeader and addtoFooter function. Make a separate layout and add it into header of ListView . In your case make a relative layout of imageview and textview and add it to the header of listview. The entire page will start scrolling.
How about putting the ImageView and TextView in a layout and putting this layout inside a ScrollView.?

Categories

Resources