Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Xml layout changes while changing orientation

I have two activities which opens depending on the SD card presence. One activity has three Buttons and a TextView and the other an ImageView, a button and zoom control. When I change the orientation, the buttons get scrambled around while in horizontal direction. How to go around this?

My 'SD' card layout

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#1E1E1E"
    android:orientation="vertical" >

    <Button
        android:id="@+id/button_print"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="44dp"
        android:background="@drawable/my_button"
        android:text="@string/print" />

    <TextView
        android:id="@+id/text_SDmissing"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="80dp"
        android:text="@string/SDmissing"
        android:textSize="20dp" />

    <Button
        android:id="@+id/button_camera"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/button_print"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="58dp"
        android:background="@drawable/my_button"
        android:text="@string/camera" />

    <Button
        android:id="@+id/button_insert"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/text_SDmissing"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="40dp"
        android:background="@drawable/my_button"
        android:text="@string/insert" />

</RelativeLayout>
like image 944
jxgn Avatar asked Mar 09 '12 08:03

jxgn


2 Answers

You have to create separate XML files for portrait and landscape modes and place it in different directories. The device will automatically select the right one. You can use the following directory structure

res/layout/my_layout.xml   
res/layout-land/layout.xml

For further reference you can check: http://developer.android.com/guide/practices/screens_support.html

like image 168
curiousguy Avatar answered Oct 07 '22 07:10

curiousguy


You can make a folder in your project called "layout-land" (in the "res" directory). In there you can copy all your xml styles from the normal "layout" folder and restyle them for landscape mode. Android will automatically use those layouts for landscape mode.

Your project would look like this:

enter image description here

like image 31
Bart Avatar answered Oct 07 '22 07:10

Bart