This is the xml layout i'm working on:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FFFFFF"
android:orientation="vertical" >
<ScrollView
android:layout_weight="2"
android:id="@+id/scrollConfirm"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
</ScrollView>
<LinearLayout
android:layout_marginTop="20px"
android:layout_weight="1"
android:id="@+id/imageNumpad"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView android:src="@drawable/myicon"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:background="#FFFFFF"
/>
</LinearLayout>
</LinearLayout>
Since I have setted the ScrollView with layout_weight="2"
and the LinearLayout (child) with layout_weight="1"
I expected that the ScrollView will use up twice free space that the LinearLayout. But I obtain the opposite result. The ScrollView is smaller than LinearLayout.
Whereas if I set for the ScrollView layout_weight="1"
and LinearLayout with layout_weight="2"
, the ScrollView is greater than LinearLayou.
How is this possible??
LinearLayout also supports assigning a weight to individual children with the android:layout_weight attribute. This attribute assigns an "importance" value to a view in terms of how much space it should occupy on the screen. A larger weight value allows it to expand to fill any remaining space in the parent view.
Weight can only be used in LinearLayout . If the orientation of linearlayout is Vertical, then use android:layout_height="0dp" and if the orientation is horizontal, then use android:layout_width = "0dp" . It'll work perfectly.
When the orientation of a LinearLayout is unspecified, it is using the default, which is horizontal . Should the layout be a column or a row? Use "horizontal" for a row, "vertical" for a column. The default is horizontal.
Android Layout Types Android provides the following ViewGroups or layouts: LinearLayout : is a ViewGroup that aligns all children in a single direction, vertically or horizontally. RelativeLayout : is a ViewGroup that displays child views in relative positions.
Weight get inverse because you are using match_parent
as the layout_height
. The weight is used to distribute the remaining empty space or take away space when the total sum is larger than the LinearLayout
. Set your heights to 0dip it will work.
i.e.,
set layout_height = "0dip"
for both ScrollView
and inner LinearLayout
.
Reference :
The use of layout_weight with Android layouts
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With