Reputation: 1
I have a layout which looks perfect in portrait mode but looks worst in landscape mode, I also created different folder for landscape. Still now able to make it perfect for all screens in landscape.
Here is the xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="top|center"
android:orientation="vertical"
android:padding="5dp" >
<RelativeLayout
android:id="@+id/RelativeLayout1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@color/gray"
android:gravity="center" >
<TextView
android:id="@+id/head"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/imageView1"
android:layout_alignParentTop="true"
android:layout_marginBottom="10dp"
android:layout_marginLeft="40dp"
android:layout_marginRight="40dp"
android:layout_marginTop="10dp"
android:layout_toRightOf="@+id/imageView1"
android:text="Choose Mode"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#ffffff" />
<ImageView
android:id="@+id/imageView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:src="@drawable/question_image" />
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:src="@drawable/menu_image" />
</RelativeLayout>
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center" >
<TableRow
android:id="@+id/tableRow1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center" >
<Button
android:id="@+id/button1"
style="@style/box_sky_blue"
android:layout_weight="1"
android:text="1" />
<Button
android:id="@+id/button2"
style="@style/box_sky_blue"
android:layout_weight="1"
android:text="2" />
<Button
android:id="@+id/button3"
style="@style/box_sky_blue"
android:layout_weight="1"
android:text="3" />
<Button
android:id="@+id/button4"
style="@style/box_sky_blue"
android:layout_weight="1"
android:text="4" />
<Button
android:id="@+id/button5"
style="@style/box_sky_blue"
android:layout_weight="1"
android:text="5" />
</TableRow>
<TableRow
android:id="@+id/tableRow2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center" >
<Button
android:id="@+id/button6"
style="@style/box_sky_blue"
android:layout_weight="1"
android:text="6" />
<Button
android:id="@+id/button7"
style="@style/box_sky_blue"
android:layout_weight="1"
android:text="7" />
<Button
android:id="@+id/button8"
style="@style/box_sky_blue"
android:layout_weight="1"
android:text="8" />
<Button
android:id="@+id/button9"
style="@style/box_sky_blue"
android:layout_weight="1"
android:text="9" />
<Button
android:id="@+id/button10"
style="@style/box_sky_blue"
android:layout_weight="1"
android:text="7" />
</TableRow>
<TableRow
android:id="@+id/tableRow3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center" >
<Button
android:id="@+id/button11"
style="@style/box_sky_blue"
android:layout_weight="1"
android:text="8" />
<Button
android:id="@+id/button12"
style="@style/box_sky_blue"
android:layout_weight="1"
android:text="7" />
<Button
android:id="@+id/button13"
style="@style/box_sky_blue"
android:layout_weight="1"
android:text="9" />
<Button
android:id="@+id/button14"
style="@style/box_sky_blue"
android:layout_weight="1"
android:text="7" />
<Button
android:id="@+id/button15"
style="@style/box_sky_blue"
android:layout_weight="1"
android:text="8" />
</TableRow>
<TableRow
android:id="@+id/tableRow3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center" >
<Button
android:id="@+id/button16"
style="@style/box_sky_blue"
android:layout_weight="1"
android:text="7" />
<Button
android:id="@+id/button17"
style="@style/box_sky_blue"
android:layout_weight="1"
android:text="7" />
<Button
android:id="@+id/button18"
style="@style/box_sky_blue"
android:layout_weight="1"
android:text="7" />
<Button
android:id="@+id/button19"
style="@style/box_sky_blue"
android:layout_weight="1"
android:text="7" />
<Button
android:id="@+id/button20"
style="@style/box_sky_blue"
android:layout_weight="1"
android:text="7" />
</TableRow>
<TableRow
android:id="@+id/tableRow3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center" >
<Button
android:id="@+id/button21"
style="@style/box_sky_blue"
android:layout_weight="1"
android:text="7" />
<Button
android:id="@+id/button22"
style="@style/box_sky_blue"
android:layout_weight="1"
android:text="7" />
<Button
android:id="@+id/button23"
style="@style/box_sky_blue"
android:layout_weight="1"
android:text="7" />
<Button
android:id="@+id/button24"
style="@style/box_sky_blue"
android:layout_weight="1"
android:text="7" />
<Button
android:id="@+id/button25"
style="@style/box_sky_blue"
android:layout_weight="1"
android:text="7" />
</TableRow>
</TableLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="50dp"
android:gravity="center" >
<ImageView
android:id="@+id/imageButton1"
android:layout_width="40dp"
android:layout_height="fill_parent"
android:layout_weight="0.25"
android:background="@drawable/reset" />
<ImageView
android:id="@+id/imageButton2"
android:layout_width="40dp"
android:layout_height="fill_parent"
android:layout_marginLeft="10dp"
android:layout_weight="0.25"
android:background="@drawable/check_solution" />
<ImageView
android:id="@+id/imageButton3"
android:layout_width="40dp"
android:layout_height="fill_parent"
android:layout_marginLeft="10dp"
android:layout_weight="0.25"
android:background="@drawable/hint" />
<ImageView
android:id="@+id/imageButton4"
android:layout_width="40dp"
android:layout_height="fill_parent"
android:layout_marginLeft="10dp"
android:layout_weight="0.25"
android:background="@drawable/next" />
</LinearLayout>
</LinearLayout>
</ScrollView>
For portrait
For Landscape
Do i need to remove the weight from those four icons, help me out :(
Upvotes: 1
Views: 660
Reputation: 1500
on the imageview of last 4 button add this attributes -
android:adjustViewBounds="true"
android:scaleType="fitCenter"
Upvotes: 3
Reputation: 4182
The main problem I see is the ImageView's. First off , never use "fill_parent" values since they are deprecated, instead use "match_parent".
Then, you need to remove weight property from them aswell. That's why they try to fill the screen by stretching which makes them look out of proportion.
Use fixed dp (density pixel) size (width/height) for the images, so that they maintain a proportion, no matter the size or the display quality. You can then, use different sizes and element display for both landscape and portrait using layout and layout-land folders, both storing different layout compositions with the same name so that they get called by the android framework depending on orientation.
You have official documentation about supporting multiple screen sizes / orientation (more specifically) here.
Upvotes: 4