jmt
jmt

Reputation: 223

Android Absolute Layout with different screen size

I'm using Absolute Layout to divide the screen to 4 species with circle in the center like this enter image description here

It is work fine with small screen size but with large screen it doesn't. How to do this with different screen width?

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/linear"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<AbsoluteLayout
    android:id="@+id/AbsoluteLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:l="true"
    android:layout_centerInParent="true"
    android:background="#fcf2cf"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.organizer2.MainActivity" >

    <Button
        android:id="@+id/Button1"
        android:layout_width="148dp"
        android:layout_height="180dp"
        android:layout_weight="1"
        android:layout_x="0dp"
        android:layout_y="0dp"
        android:background="#219baa"
        android:text="Button" />

    <Button
        android:id="@+id/Button2"
        android:layout_width="148dp"
        android:layout_height="180dp"
        android:layout_weight="1"
        android:layout_x="148dp"
        android:layout_y="0dp"
        android:background="#ef820b"
        android:text="Button" />

    <Button
        android:id="@+id/Button3"
        android:layout_width="148dp"
        android:layout_height="180dp"
        android:layout_weight="1"
        android:layout_x="0dp"
        android:layout_y="180dp"
        android:background="#e3c800"
        android:text="Button" />

    <Button
        android:id="@+id/Button4"
        android:layout_width="148dp"
        android:layout_height="180dp"
        android:layout_weight="1"
        android:layout_x="148dp"
        android:layout_y="180dp"
        android:background="#36bc89"
        android:text="Button" />

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_x="4dp"
        android:layout_y="132dp"
        android:src="@drawable/circle" />

   </AbsoluteLayout>

</RelativeLayout>

Upvotes: 1

Views: 1129

Answers (1)

Andre Perkins
Andre Perkins

Reputation: 7800

AbsolueLayouts are a big no-no since they don't do anything with devices of different sizes. Try and achieve this view with using a combination of LinearLayouts. By setting all the buttons to be inside of linearlayout and giving each button a weight of 1, we are telling them all to grow, which would not happen inside of an absolute layout. The linearlayouts themselves are also in a linearlayout and also have been given weights so they will grow as there is extra screen space to occupy (nested LinearLayouts are not great for performance but don't worry about that as of now, since you still seem to be learning the basics and users of your app will not notice any delay). :

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/linear"
android:layout_width="match_parent"
android:background="#fcf2cf"
android:layout_height="match_parent"
android:orientation="vertical" >

    <LinearLayout 
    android:id="@+id/linear"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="vertical" >

           <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
           xmlns:tools="http://schemas.android.com/tools"
           android:id="@+id/linear"
           android:layout_width="match_parent"
           android:layout_height="match_parent"
           android:layout_weight=1
           android:orientation="hoizontal" >

                 <Button
                 android:id="@+id/Button1"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_weight="1"
                 android:background="#219baa"
                 android:text="Button" />

                 <Button
                 android:id="@+id/Button2"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_weight="1"
                 android:background="#ef820b"
                 android:text="Button" />

           </LinearLayout>

           <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
           xmlns:tools="http://schemas.android.com/tools"
           android:id="@+id/linear"
           android:layout_width="match_parent"
           android:layout_height="match_parent"
           android:layout_weight=1
           android:orientation="hoizontal" >

                <Button
                android:id="@+id/Button3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="#e3c800"
                android:text="Button" />

                <Button
                android:id="@+id/Button4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="#36bc89"
                android:text="Button" />

          </LinearLayout>
</LinearLayout>

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:src="@drawable/circle" />

   </AbsoluteLayout>

</RelativeLayout>

Upvotes: 1

Related Questions