Reputation: 1975
I have RelativeLayout
with 3 LinearLayouts
where I have buttons located. 2 button in each layout.
button sizes remain same on devices with different size: Nexus 7 -
Nexus 5 - !
but I want buttons to resize for different screen sizes. this is the source of layout file:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:minWidth="25px"
android:minHeight="25px">
<LinearLayout
android:orientation="horizontal"
android:minWidth="25px"
android:minHeight="25px"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/superviserlinearLayout1"
android:layout_centerHorizontal="true"
android:paddingTop="5dp">
<Button
android:text="აგენტები"
android:id="@+id/superviserBtnAgents"
android:drawableTop="@drawable/admin"
android:textStyle="bold"
android:textSize="14sp"
android:layout_width="145dp"
android:layout_height="145dp" />
<Button
android:text="ობიექტები"
android:id="@+id/superviserBtnObjects"
android:drawableTop="@drawable/store"
android:textStyle="bold"
android:textSize="14sp"
android:layout_width="145dp"
android:layout_height="match_parent" />
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:minWidth="25px"
android:minHeight="25px"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/superviserlinearLayout1"
android:id="@+id/superviserlinearLayout2"
android:layout_centerHorizontal="true">
<Button
android:text="დებიტორები"
android:drawableTop="@drawable/money"
android:textStyle="bold"
android:textSize="14sp"
android:layout_width="145dp"
android:layout_height="145dp"
android:id="@+id/superviserBtnDebitors" />
<Button
android:text="საწყობი"
android:drawableTop="@drawable/production"
android:textStyle="bold"
android:textSize="14sp"
android:layout_width="145dp"
android:layout_height="145dp"
android:id="@+id/superviserBtnDepot" />
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:minWidth="25px"
android:minHeight="25px"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/superviserlinearLayout2"
android:id="@+id/superviserlinearLayout3"
android:layout_centerHorizontal="true">
<Button
android:text="ინკასაცია"
android:drawableTop="@drawable/atm"
android:textStyle="bold"
android:textSize="14sp"
android:layout_width="145dp"
android:layout_height="145dp"
android:id="@+id/superviserBtnIncasation" />
<Button
android:text="შეტყობინებები"
android:drawableTop="@drawable/notes"
android:textStyle="bold"
android:textSize="14sp"
android:layout_width="match_parent"
android:layout_height="145dp"
android:id="@+id/superviserBtnNotes" />
</LinearLayout>
any suggestions how to achieve this?
Edit: I need background images to stretch, even if they appear pixelated.
Upvotes: 1
Views: 3596
Reputation: 28823
Remove the hardcoded width of buttons.
Change the LinearLayout width to match_parent
instead of wrap_content
, and use weight for buttons.
Something like:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:minHeight="25px"
android:minWidth="25px"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/superviserlinearLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:minHeight="25px"
android:minWidth="25px"
android:orientation="horizontal"
android:paddingTop="5dp"
android:weightSum="2">
<Button
android:id="@+id/superviserBtnAgents"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="145dp"
android:drawableTop="@drawable/ic_launcher"
android:text="აგენტები"
android:textSize="14sp"
android:textStyle="bold" />
<Button
android:id="@+id/superviserBtnObjects"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent"
android:drawableTop="@drawable/ic_launcher"
android:text="ობიექტები"
android:textSize="14sp"
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
android:id="@+id/superviserlinearLayout2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/superviserlinearLayout1"
android:layout_centerHorizontal="true"
android:minHeight="25px"
android:minWidth="25px"
android:orientation="horizontal"
android:weightSum="2">
<Button
android:id="@+id/superviserBtnDebitors"
android:layout_width="0dp"
android:layout_height="145dp"
android:drawableTop="@drawable/ic_launcher"
android:text="დებიტორები"
android:textSize="14sp"
android:textStyle="bold"
android:layout_weight="1"/>
<Button
android:id="@+id/superviserBtnDepot"
android:layout_width="0dp"
android:layout_height="145dp"
android:drawableTop="@drawable/ic_launcher"
android:text="საწყობი"
android:textSize="14sp"
android:textStyle="bold"
android:layout_weight="1"/>
</LinearLayout>
<LinearLayout
android:id="@+id/superviserlinearLayout3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/superviserlinearLayout2"
android:layout_centerHorizontal="true"
android:minHeight="25px"
android:minWidth="25px"
android:weightSum="2"
android:orientation="horizontal" >
<Button
android:id="@+id/superviserBtnIncasation"
android:layout_width="0dp"
android:layout_height="145dp"
android:drawableTop="@drawable/ic_launcher"
android:text="ინკასაცია"
android:textSize="14sp"
android:textStyle="bold"
android:layout_weight="1"/>
<Button
android:id="@+id/superviserBtnNotes"
android:layout_width="0dp"
android:layout_height="145dp"
android:drawableTop="@drawable/ic_launcher"
android:text="შეტყობინებები"
android:textSize="14sp"
android:textStyle="bold"
android:layout_weight="1"/>
</LinearLayout>
</RelativeLayout>
Hope it helps.
Upvotes: 1
Reputation: 169
To support different screen sizes you have to put appropriate sized images in the respective drawable folders, according to google these are the recommended sizes:
xlarge screens are at least 960dp x 720dp (xxhdpi folder)
large screens are at least 640dp x 480dp (xhdpi folder)
normal screens are at least 470dp x 320dp (hdpi folder or mdpi (depends))
small screens are at least 426dp x 320dp (ldpi)
Note: These minimum screen sizes were not as well defined prior to Android 3.0, so you may encounter some devices that are mis-classified between normal and large. These are also based on the physical resolution of the screen, so may vary across devices—for example a 1024x720 tablet with a system bar actually has a bit less space available to the application due to it being used by the system bar. -Google
Upvotes: 1