3

I have a little problem with layouts. I have made RelativeLayout in which I put two LinearLayouts (1 and 2) and between them ScrollView with LinearLayout. Next I set that ScrollView to be placed under linearLayout2 and above linearLayout1. But LinearLayout inside that ScrollView isn't set as it's parent.

Here's the code, maybe I've made a mistake:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content">

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"        
        android:padding="6dip"
        android:layout_alignParentTop="true"
        android:id="@+id/lin1"
        android:layout_weight="1">

</LinearLayout>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_alignParentBottom="true"
        android:layout_weight="1" android:id="@+id/lin3" 
        android:layout_height="60dip">          

</LinearLayout>

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" 
android:scrollbars="horizontal"
android:layout_below="@id/lin1"
android:layout_above="@id/lin3" android:id="@+id/ScrollView">

<LinearLayout
        android:layout_width="fill_parent"                      
        android:orientation="vertical"
        android:id="@+id/lin2" 
        android:layout_height="fill_parent"  
        android:layout_gravity="center_vertical|center_horizontal">

    <Button android:text="@string/button1" 
        android:id="@+id/button1" 
        android:layout_gravity="center" 
        android:layout_width="280dip" 
        android:layout_height="60dip">
    </Button>

    <Button android:text="@string/button2"
        android:id="@+id/button2" 
        android:layout_gravity="center" 
        android:layout_width="280dip" 
        android:layout_height="60dip">
    </Button>

    <Button android:text="@string/button3" 
        android:id="@+id/button3" 
        android:layout_gravity="center" 
        android:layout_width="280dip" 
        android:layout_height="60dip">
    </Button>

    <Button android:text="@string/button4"
        android:id="@+id/button4" 
        android:layout_gravity="center" 
        android:layout_width="280dip" 
        android:layout_height="60dip">
    </Button>


</LinearLayout>
</ScrollView>

Any ideas, why LinearLayout inside of ScrollView is bigger than the ScrollView?

EDIT: So far I've noticed that LinearLayout inside of ScrollView moves outside when I set layout_gravity="center_vertical". It looks like setting center refers to main layout (RelativeLayout).

3 Answers 3

5

Ok, I've made it. All I had to do is setting LinearLayout that is inside of ScrollView to

layout_width="wrap_content"
layout_gravity="center_horizontal"
android:orientation="vertical"

The ScrollView to

layout_width="fill_parent"
layout_gravity="center_horizontal"
layout_height="wrap_content"

And at the end I've put that ScrollView into new LinearLayout with parameters as following:

layout_width="fill_parent" 
layout_height="fill_parent" 
gravity="center_vertical" 
orientation="vertical"

So the ScrollView and it's child Layout are setting buttons center horizontaly and the outer LinearLayout is setting them center verticaly. :-)

Sign up to request clarification or add additional context in comments.

Comments

2

Try changing the layout_width of lin2 to wrap_content instead of fill_parent.

1 Comment

The problem isn't the width, but height, where lin2's height is bigger than it's parent - ScrollView
0

try this code i think this is the best sollution

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.