Reputation: 942
I'm trying to design a LinearLayout within a ScrollView, as the whole content will be pushed up when the keyboard will be activated.
<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:
Upvotes: 0
Views: 2422
Reputation: 11255
I have done some modification in your
Layout
. Some modification in firstLinear Layout
changes inweights and gravity
. And same also in secondLinear 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.
Upvotes: 0
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
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
Reputation: 215
android:windowSoftInputMode="stateVisible|adjustPan"
Add this in your AndroidManifest file in respective activity.
Upvotes: 1
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