Sean
Sean

Reputation: 963

Android LinearLayout changes on screen rotation

I am using the following XML code for tablets in API Level 17.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:layout_gravity="center" >

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_gravity="center_horizontal"
    android:padding="40dp" >

    <EditText
        android:id="@+id/etUsername"
        android:layout_width="wrap_content"
        android:layout_gravity="center"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:ems="10"            
        android:inputType="text" >
    </EditText>

    <TextView
        android:id="@+id/tvUsername"
        android:layout_width="wrap_content"
        android:layout_gravity="center"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="User Name" />
</LinearLayout>

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal" 
    android:layout_gravity="center_horizontal"       
    android:padding="40dp" >

    <EditText
        android:id="@+id/etPassword"
        android:layout_width="wrap_content"
        android:layout_gravity="center"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:ems="10"
        android:inputType="textPassword" />

    <TextView
        android:id="@+id/tvPassword"
        android:layout_width="wrap_content"
        android:layout_gravity="center"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Password" />
</LinearLayout>

<Button
    android:id="@+id/submitbutton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"  
    android:layout_gravity="center"
    android:background="@drawable/buttonpressing"
    android:text="Submit"

     />


<TextView
    android:id="@+id/showresult"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text=""
    android:layout_gravity="center" />

I want my TextView, EditText and Button to be centered. In landscape view (horizontal) they seem to be centred but in portrait(vertical) screen, they are in centre at the top of the screen. How am I gonna fix it that no matter which view is this, they all stay in centre of screen?

Upvotes: 0

Views: 1986

Answers (1)

Oknesif
Oknesif

Reputation: 526

Problem is that you set height of the root layout to "match_parent"

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="center">

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_gravity="center_horizontal"
    android:padding="40dp">

    <EditText
        android:id="@+id/etUsername"
        android:layout_width="wrap_content"
        android:layout_gravity="center"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:ems="10"
        android:inputType="text"></EditText>

    <TextView
        android:id="@+id/tvUsername"
        android:layout_width="wrap_content"
        android:layout_gravity="center"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="User Name" />
</LinearLayout>

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_gravity="center_horizontal"
    android:padding="40dp">

    <EditText
        android:id="@+id/etPassword"
        android:layout_width="wrap_content"
        android:layout_gravity="center"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:ems="10"
        android:inputType="textPassword" />

    <TextView
        android:id="@+id/tvPassword"
        android:layout_width="wrap_content"
        android:layout_gravity="center"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Password" />
</LinearLayout>

<Button
    android:id="@+id/submitbutton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:text="Submit"
    />


<TextView
    android:id="@+id/showresult"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text=""
    android:layout_gravity="center" />
</LinearLayout>

Upvotes: 1

Related Questions