FET
FET

Reputation: 942

LinearLayout, layout_gravity not working properly

I'm trying to design a LinearLayout within a ScrollView, as the whole content will be pushed up when the keyboard will be activated.


XML code I'm having issues with:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">

<LinearLayout 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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    tools:context="com.FET.leonardo.scurcola.NameSelection"
    android:background="#e0ab18">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:text="@string/whoMaster"
        android:textColor="@color/white"
        android:textSize="50sp"
        android:layout_marginTop="25dp"
        android:textAlignment="center"
        android:id="@+id/whoMaster"
        android:layout_gravity="top"
        android:layout_weight="5" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:text="@string/zero"
        android:textSize="50sp"
        android:textColor="@color/white"
        android:id="@+id/playersLeft"
        android:layout_gravity="center"
        android:layout_weight="3"/>

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:inputType="textPersonName"
        android:hint="@string/master"
        android:ems="10"
        android:textColorHint="@color/white"
        android:textColor="@color/white"
        android:textColorHighlight="@color/white"
        android:id="@+id/names"
        android:layout_gravity="center"
        android:layout_weight="4" />

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="2"
        android:layout_gravity="bottom"
        android:orientation="horizontal">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/next"
        android:onClick="onClick"
        android:text="@string/next"
        android:textColor="#e0ab18"
        android:layout_gravity="start|center"
        />


    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/back"
        android:id="@+id/back"
        android:enabled="false"
        android:onClick="onClick"
        android:textColor="#e0ab18"
        android:layout_gravity="end|center"/>

    <Button
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:id="@+id/finish"
        android:visibility="gone"
        android:text="@string/finish"
        android:onClick="onClick"
        android:textColor="#e0ab18"/>
    </LinearLayout>

</LinearLayout>


What I don't understand is why the buttons inside the second LinearLayout don't get respectively on the start and o the end of the LinearLayout.

Thus, I'd like to have this final design, but I don't know how to achieve this using a LinearLayout: Final achievement

Upvotes: 0

Views: 2422

Answers (5)

Jay Rathod
Jay Rathod

Reputation: 11255

I have done some modification in your Layout. Some modification in first Linear Layout changes in weights and gravity. And same also in second Linear Layout.

Please apply this modified code in your XML.

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#e0ab18"
        android:orientation="vertical"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin">

        <TextView
            android:id="@+id/whoMaster"
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            android:layout_gravity="center"
            android:layout_marginTop="10dp"
            android:layout_weight="1"
            android:gravity="center"
            android:text="Who's The Master"
            android:textAlignment="center"
            android:textColor="#FFFFFF"
            android:textSize="35sp" />

        <EditText
            android:id="@+id/names"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:ems="10"
            android:hint="Master"
            android:inputType="textPersonName"
            android:textColor="#FFFFFF"
            android:layout_marginLeft="30dp"
            android:layout_marginRight="30dp"
            android:textColorHighlight="#FFFFFF"
            android:textColorHint="#FFFFFF" />

        <TextView
            android:id="@+id/playersLeft"
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            android:layout_gravity="center"
            android:layout_marginTop="25dp"
            android:layout_weight="1"
            android:gravity="center_vertical"
            android:text="9"
            android:textColor="#FFFFFF"
            android:textSize="35sp" />

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:layout_gravity="bottom"
            android:layout_weight="1"
            android:orientation="horizontal">

            <Button
                android:id="@+id/back"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_gravity="end|center"
                android:layout_weight="0.50"
                android:enabled="false"
                android:onClick="onClick"
                android:text="Back"
                android:textColor="#e0ab18" />

            <Button
                android:id="@+id/next"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_gravity="start|center"
                android:layout_weight="0.50"
                android:onClick="onClick"
                android:text="Next"
                android:textColor="#e0ab18" />


        </LinearLayout>


    </LinearLayout>


</ScrollView>

Here is screen.

enter image description here

Upvotes: 0

Nikhil
Nikhil

Reputation: 3711

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true">

    <LinearLayout 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="#e0ab18"
        android:orientation="vertical"
        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.FET.leonardo.scurcola.NameSelection">

        <TextView
            android:id="@+id/whoMaster"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_marginTop="25dp"
            android:layout_weight="3"
            android:text="who is master"
            android:textAlignment="center"
            android:textColor="@color/white"
            android:textSize="50sp" />

        <EditText
            android:id="@+id/names"
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            android:layout_gravity="center"
            android:layout_weight="3"
            android:ems="10"
            android:gravity="center"
            android:hint="master's name"
            android:inputType="textPersonName"
            android:textColor="@color/white"
            android:textColorHighlight="@color/white"
            android:textColorHint="@color/white" />

        <TextView
            android:id="@+id/playersLeft"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="2"
            android:gravity="center"
            android:text="9"
            android:textColor="@color/white"
            android:textSize="50sp" />

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:layout_weight="2"
            android:gravity="center"
            android:orientation="horizontal">

            <Button
                android:id="@+id/next"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="start|center"
                android:onClick="onClick"
                android:text="next"
                android:textColor="#e0ab18" />


            <Button
                android:id="@+id/back"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="end|center"
                android:enabled="false"
                android:onClick="onClick"
                android:text="back"
                android:textColor="#e0ab18" />

            <Button
                android:id="@+id/finish"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:onClick="onClick"
                android:text="finish"
                android:textColor="#e0ab18"
                android:visibility="gone" />
        </LinearLayout>

    </LinearLayout>
</ScrollView>

Check if this helps.

Upvotes: 0

MrJM
MrJM

Reputation: 1214

Try this code.

You can apply multiple gravity attributes by doing something like

android:layout_gravity="top|center_horizontal"

To align the element itself in it's parent you have to use android:layout_gravity to align the content of the element, say the text in a textview, you use android:gravity

When you need extra space between your elements it's not necessary to give the element a more than needed height like you did with the EditText. Simply add a <Space>element to provide lightweight empty spaces in your layout.

This is how I applied it to your code:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fillViewport="true">

    <LinearLayout 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="#e0ab18"
                  android:orientation="vertical"
                  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.FET.leonardo.scurcola.NameSelection">

        <TextView
            android:id="@+id/whoMaster"
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            android:layout_gravity="top|center_horizontal"
            android:gravity="center_horizontal"
            android:layout_marginTop="25dp"
            android:layout_weight="5"
            android:text="@string/whoMaster"
            android:textAlignment="center"
            android:textColor="@color/white"
            android:textSize="50sp"/>

        <EditText
            android:id="@+id/names"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:ems="10"
            android:hint="@string/master"
            android:inputType="textPersonName"
            android:textColor="@color/white"
            android:textColorHighlight="@color/white"
            android:textColorHint="@color/white"/>


        <Space
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="2"/>

        <TextView
            android:id="@+id/playersLeft"
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            android:layout_gravity="center"
            android:layout_weight="3"
            android:text="@string/zero"
            android:textColor="@color/white"
            android:textSize="50sp"/>


        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            android:layout_gravity="bottom|center_horizontal"
            android:layout_weight="2"
            android:orientation="horizontal">


            <Button
                android:id="@+id/back"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="end|center"
                android:layout_marginRight="12dp"
                android:enabled="false"
                android:onClick="onClick"
                android:text="@string/back"
                android:textColor="#e0ab18"/>

            <Button
                android:id="@+id/next"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="start|center"
                android:layout_marginLeft="12dp"
                android:onClick="onClick"
                android:text="@string/next"
                android:textColor="#e0ab18"
                />

            <Button
                android:id="@+id/finish"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:onClick="onClick"
                android:text="@string/finish"
                android:textColor="#e0ab18"
                android:visibility="gone"/>
        </LinearLayout>

    </LinearLayout>
</ScrollView>

Upvotes: 2

bhagyawant biradar
bhagyawant biradar

Reputation: 215

android:windowSoftInputMode="stateVisible|adjustPan"

Add this in your AndroidManifest file in respective activity.

Upvotes: 1

injecteer
injecteer

Reputation: 20707

layout_gravity is intended to use with FrameLayout and defines the positioning of an element with layout_gravity set inside the enclosing FrameLayout. For LinearLayout it'll be simply ignored

Upvotes: 0

Related Questions