I am trying to achieve multi-screen support on my android app, so I provided several layout folders "layout-sw480dp", "layout-sw600dp", "layout-sw720dp" and same named xml files. I use 720dp layout as my main and everything looks nice on 10.1" tablet, but 4.3" phone fails to load corresponding layout. I have read tons of articles and different questions, but still can't figure out solution. Could anyone help me to solve this out?
Example of default xml layout:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/blackboard"
android:orientation="vertical" >
<TextView
android:id="@+id/welcomeTextView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_marginTop="40dp"
android:text="@string/welcomeLabel"
android:textColor="@color/white"
android:textSize="56sp" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginLeft="55dp"
android:layout_marginTop="30dp"
android:weightSum="100" >
<TextView
android:id="@+id/nameLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="5"
android:text="@string/nameLabel"
android:textColor="@color/white"
android:textSize="26sp" />
<EditText
android:id="@+id/nameEditText"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_weight="20"
android:background="@color/white"
android:textColor="@color/blue"
android:textSize="26sp" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingLeft="55dp"
android:paddingTop="20dp"
android:weightSum="100" >
<TextView
android:id="@+id/eqNumberLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="5"
android:text="@string/eqNumberLabel"
android:textColor="@color/white"
android:textSize="26sp" />
<EditText
android:id="@+id/eqNumberEditText"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_weight="10"
android:background="@color/white"
android:inputType="number"
android:textColor="@color/blue"
android:textSize="26sp" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="20dp">
<CheckBox
android:id="@+id/reducedCheckBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="55dp"
android:layout_marginRight="10dp"
android:button="@drawable/checkbox"
android:layout_gravity="center" >
</CheckBox>
<TextView
android:id="@+id/reducedLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/reducedLabel"
android:textColor="@color/white"
android:textSize="36sp" />
</LinearLayout>
<Button
android:background="@drawable/begin_button"
android:layout_marginTop="20dp"
android:id="@+id/beginButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:enabled="false"
android:text="@string/beginButton"
android:textColor="@color/black"
android:textSize="36sp"/>
I had same problem. Now I just resize my layouts in onCreate, onConfigurationChanged, and at other times in code. This works for ANY size screen. Code below gives the devices actual pixels. Can you provide your default xml?
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
final float width = dm.widthPixels;
final float height = dm.heightPixels;