I want to create a XML Layout that will support all the Screen sizes. In the XML, first element is ImageView
, second one is TextView
and third one
So you need to create different folders and maintain all xml in those folders.
The following is a list of resource directories in an application that provides different layout designs for different screen sizes and different bitmap drawables for medium, high, and extra high density screens.
res/layout/my_layout.xml // layout for normal screen size ("default")
res/layout-small/my_layout.xml // layout for small screen size
res/layout-large/my_layout.xml // layout for large screen size
res/layout-xlarge/my_layout.xml // layout for extra large screen size
res/layout-xlarge-land/my_layout.xml // layout for extra large in landscape orientation
For more info refer this link
You need to put all the Widths
, Heights
, Paddings
, Margins
, etc in the /res/values/dimens.xml
file like this:
dimens.xml :
<!-- Small Dimensions = "Medium Dimensions * 0.75" For Example: 210*.75 = 157.5-->
<dimen name = "button1_width_small">157.5dip</dimen>
<!-- Medium Dimensions -->
<dimen name = "button1_width_medium">210dip</dimen>
<!-- Large Dimensions = "Medium Dimensions * 1.5" For Example: 210*1.5 = 315 -->
<dimen name = "button1_width_large">315dip</dimen>
<!-- XLarge Dimensions = "Medium Dimensions * 2" For Example: 210*1.5 = 420 -->
<dimen name = "button1_width_xLarge">420dip</dimen>
And use them in your Layouts
(Normal/Medium) like this:
<Button
android:id="@+id/button1"
android:layout_width="@dimen/button1_width_medium"
android:layout_height="210dp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:background="@drawable/animation0" />
For converting the dimensions use the following Values:
0.75 - ldpi (small) //mdpi dimens *0.75
1.0 - mdpi (normal) //First create these dimensions
1.5 - hdpi (large) //mdpi dimens *1.5
2.0 - xhdpi (xLarge) //mdpi dimens *2.0
You also need to create different Layouts Folders
in your res
folder for all devices and use the dimensions accordingly.
Generic Layout Folders (Android Dev Guide) :
res/layout-small
res/layout-normal
res/layout-large
res/layout-xlarge
After you are done with making your Normal/Medium Layouts
follow these steps:
Then your Layouts should work on every device with correct positioning.
I hope this helps.
You also need to support different screens in manifast xml file Open "AndroidManifest" and add the following after android versionName.
android:versionName="1.0" >
<supports-screens android:smallScreens="true"
android:normalScreens="true"
android:largeScreens="true"
android:xlargeScreens="true"
android:anyDensity="true"
android:resizeable="true"/>