Scrollview multiple LinearLayouts - android

So I have multiple linearlayouts (4) and I would like to have them all in a scrollview. These layouts are used for input fields that are separated by column/category Names, Ages, Occupation, and Country of Residence.
Each one of these has their own linearlayout. Is there a way to make them all scrollable simultaneously (since scrollview only supports 1 child)?

Just have one LinearLayout that contains all other LInearLayouts
From Docs
... meaning you should place one child in it containing the entire contents to scroll; this child may itself be a layout manager with a complex hierarchy of objects
This means that it can have only one direct child (the main LinearLayout) but that one child can have its own children.

ScrollView can have only one direct child
so use one Layout that will Contain all your Layouts
Like
<ScrollView .....>
<LinearLayout .....>
.............Your All other Layouts .................
</LinearLayout>
</ScrollView>

You have to take your time and do it one at a time. As Tarsem said, you can put one layout inside this scrollview
<ScrollView .....>
<LinearLayout .....>
//Inside this layout, you can another scroll view.
<ScrollView .....>
<LinearLayout .....>
.............All your other Layouts .................
//continue adding them until you add your last scroll view. if that
is the desire layout.
</LinearLayout>
</ScrollView>
</LinearLayout>
</ScrollView>

<ScrollView
<LinearLayout // Your Main Layout
<LinearLayout // Child Layout 1st
</LinearLayout>
<LinearLayout // Child Layout 2nd
</LinearLayout>
<LinearLayout // Child Layout 3rd
</LinearLayout>
</LinearLayout>
</ScrollView>
Try to use about format.
Hope it helps.
Regards

Related

Android Studio layout management problems

I'm new to android studio... So I've been trying to make a simple app. When I want to put two linear layouts in another one, One of them goes out of the frame!
I don't know if I'm doing this right or not.
Also here are the pictures (the second one is the problem):
1)http://i.imgur.com/2H1hOxk.jpg
2)http://i.imgur.com/5IeZHsC.jpg
thanks
From your pictures, your parent linear layout which contains the other two linear layouts has its orientation set to "horizontal". It must be set to "vertical" to be above each other...
In your parent linear layout, you will find this:
android:orientation="horizontal"
Change it to:
android:orientation="vertical"
For horizontal orientation, you need to set both of the inner LinearLayout widths to 0dp and set their weights to 1.
For veritcal orientation, you need to set both of the inner LinearLayout heights to 0dp and set their weights to 1.
Without the weight attribute, since the first LinearLayout width is set to match_parent, it takes up the entire LinearLayout.
Example:
in your case of a horizontal layout:
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="0d"
android:layout_height="match_parent"
android:layout_weight="1">
</LinearLayout>
<LinearLayout
android:layout_width="0d"
android:layout_height="match_parent"
android:layout_weight="1">
</LinearLayout>
</LinearLayout>

Checking child is going out of bound in LinearLayout

I am dynamically adding children in LinearLayout horizontally. I am adding child on button click. But after adding some children, say 4, others children go out of screen as these are being added horizontally. How can I check that child is going beyond screen in LinearLayout, and I need to create new layout? Or what can I do with the LinearLayout so that when it goes out of screen, it wraps itself?
Any help? Thanks in advance.
Just put your LinearLayout inside HorizontalScrollView, it will do all the necessary work for you:
<?xml version="1.0" encoding="utf-8"?>
<HorizontalScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
</LinearLayout>
</HorizontalScrollView>
EDIT if you want your views to be wrapped inside the parent view, please take a look here Line-breaking widget layout for Android

Adjust gridview between two views within a layout in android

In my application, I have a layout which includes a LinearLayout--> Top, GridView--> Middle and a set of views which should be aligned to the bottom.
1. Layout when gridview is not having much content
2. Layout when grid view contents are increased
3. Layout as how it should be shown when Gridview content is very large
Presently my gridview is expanding when the contents in it is increasing that the lower level contents are not visible in the screen.
I don't want to assign specific height to the grid view as it is looking weird in screens with different dimensions.
Is there any way that the gridview expands only upto the bottom views? My parent layout is LinearLayout. I have tried out with relative layout, but it is not working.
I too faced the same problem and found the solution by modifying the respective xmls as below:
Use RelativeLayout as Parent Layout.
Place the Header Content in RelativeLayout
Use ScrollView for the GridView which changes dynamically.
Place the Footer Layout after ScrollView
as shown below:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TextView
android:id="#+id/txtTextView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<ScrollView
android:id="#+id/scro1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="#id/txtTextView" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<GridView
android:id="#+id/scro1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
</LinearLayout>
</ScrollView>
</RelativeLayout>
android:layout_below attribute in ScrollView makes the difference.

2 layouts nested in a scroll view(one of them a table layout) - Android?

I am wondering is it possible to have 2 nested layouts in android? I have table layout in a scroll view. I want to add another layout type(not sure which one yet) but everyone I try crashes.
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TableLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
</TableLayout>
<TableLayout
android:id="#+id/tblLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
.... rows here ....
</TableLayout>
</ScrollView>
this will crash on the SetContentView(Resource.Layout.MyLayout);
"This is the next statement to execute when this thread returns from
the current function."
If I just have one layout in the ScrollView it will load.
Scrollview documentation is sometimes interesting:
http://developer.android.com/reference/android/widget/ScrollView.html
Layout container for a view hierarchy that can be scrolled by the
user, allowing it to be larger than the physical display. A ScrollView
is a FrameLayout, meaning you should place one child in it containing
the entire contents to scroll; this child may itself be a layout
manager with a complex hierarchy of objects. A child that is often
used is a LinearLayout in a vertical orientation, presenting a
vertical array of top-level items that the user can scroll through.
As they suggest, you should put a LinearLayout that include both of your TableLayout
Try surrounding the two tables with a Layout like this;
<ScrollView>
<RelativeLayout>
<TableLayout>
</TableLayout>
<TableLayout>
</TableLayout>
<RelativeLayout>
</ScrollView>

How to center align a view?

I need to lay a variable number of views (may just be one) next to each other like in LinearLayout. But I want the whole arrangement to be center aligned. The views should be next to each other. But the whole arrangement should be equidistant from the left and right edge of the screen or the containing parent. How can I accomplish this?
You will have to wrap your views inside a LinearLayout and your linear layout inside something else:
<LinearLayout
android:orientation="vertical">
<LinearLayout
android:layout_width="wrap_content"
android:layout_gravity="center_horizontal">
<View/>
<View/>
etc...
</LinearLayout>
</LinearLayout>
Make sure all your views use android:layout_width="wrap_content". If you are working with RelativeLayout, it will be:
<RelativeLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_centerHorizontal="true">
<View/>
<View/>
<View/>
</LinearLayout>
</RelativeLayout>
Did you try
android:gravity="center"
?
This will do it for you
android:layout_gravity="center_horizontal"
Also you want to consider the weight property to make sure that this layout element takes priority over others.
http://developer.android.com/reference/android/widget/LinearLayout.LayoutParams.html
To group everything together you can use a Frame Layout or Relative Layout.

Categories

Resources