Vikas Mane
Vikas Mane

Reputation: 789

Alignment issues using relative layout in different android versions

I am using relative layout to duplicate the effect of fab anchoring. Following is my code for the layout.

    <LinearLayout
        android:layout_marginTop="28dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <LinearLayout
            android:id="@+id/bottom_sheet12"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#ffffff"
            android:orientation="vertical">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:orientation="horizontal">

                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:orientation="vertical"
                    android:paddingRight="15dp"
                    android:paddingBottom="10dp"
                    android:paddingLeft="15dp"
                    android:paddingTop="10dp">

                    <TextView
                        android:id="@+id/textView102_5"
                        android:layout_width="250dp"
                        android:layout_height="wrap_content"
                        android:singleLine="true"
                        android:text="Opera House"
                        android:textSize="18sp"
                        android:textStyle="bold" />

                    <TextView
                        android:id="@+id/textView103_5"
                        android:layout_width="250dp"
                        android:singleLine="true"
                        android:layout_height="wrap_content"
                        android:layout_marginBottom="5dp"
                        android:text="Valet zone"
                        android:textColor="#bdbdbd"
                        android:textSize="12sp" />

                    <LinearLayout
                        android:id="@+id/layout_status"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center_horizontal"
                        android:layout_marginBottom="5dp"
                        android:orientation="horizontal">

                        <TextView
                            android:id="@+id/textView118"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="erwerwerewr"
                            android:textSize="12sp" />

                        <TextView
                            android:id="@+id/textView106_5"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="abcd"
                            android:textSize="12sp"
                            android:textStyle="bold" />

                    </LinearLayout>

                    <LinearLayout

                        android:id="@+id/layout_hours"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center_horizontal"
                        android:orientation="horizontal">

                        <TextView
                            android:id="@+id/textView120"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="Hours: "
                            android:textSize="12sp" />

                        <TextView
                            android:id="@+id/textView107_5"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:text="9:00 AM - 9:00 PM"
                            android:textSize="12sp" />

                    </LinearLayout>
                </LinearLayout>

            </LinearLayout>

            <View
                android:layout_width="match_parent"
                android:layout_height="1dp"
                android:layout_gravity="center_horizontal"
                android:background="#e0e0e0" />

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:orientation="horizontal">

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:orientation="vertical">

                    <TextView
                        android:textStyle="bold"
                        android:id="@+id/textView109_5"
                        android:layout_width="match_parent"
                        android:layout_height="50dp"
                        android:layout_marginLeft="8dp"
                        android:layout_marginRight="8dp"
                        android:drawableLeft="@drawable/ic_navigation_black_24dp"
                        android:gravity="center"
                        android:layout_gravity="fill"
                        android:text="abcd"
                        android:textSize="12sp" />
                </LinearLayout>

                <View
                    android:layout_width="1dp"
                    android:layout_height="50dp"
                    android:background="#e0e0e0" />

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:orientation="vertical">

                    <TextView
                        android:textStyle="bold"
                        android:id="@+id/textView111_5"
                        android:layout_width="match_parent"
                        android:layout_height="50dp"
                        android:layout_marginLeft="8dp"
                        android:layout_marginRight="8dp"
                        android:drawableLeft="@drawable/support_valet"
                        android:gravity="center"
                        android:layout_gravity="fill"
                        android:text="abcd"
                        android:textSize="12sp" />
                </LinearLayout>

                <View
                    android:layout_width="1dp"
                    android:layout_height="50dp"
                    android:background="#e0e0e0" />

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:orientation="vertical">

                    <TextView
                        android:textStyle="bold"
                        android:id="@+id/textView129_5"
                        android:layout_width="match_parent"
                        android:layout_height="50dp"
                        android:layout_marginLeft="8dp"
                        android:layout_marginRight="8dp"
                        android:drawableLeft="@drawable/ic_assignment_black_24dp"
                        android:gravity="center"
                        android:layout_gravity="fill"
                        android:text="abcd"
                        android:textSize="12sp" />
                </LinearLayout>
            </LinearLayout>

        </LinearLayout>
    </LinearLayout>


    <LinearLayout
        android:layout_width="100dp"
        android:layout_height="78dp"
        android:orientation="vertical"
        android:layout_alignParentRight="true"
        android:gravity="center">
        <android.support.design.widget.FloatingActionButton
            android:id="@+id/fab5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:fab_size="normal"
            android:src="@drawable/ic_flag_white_24dp"
            app:backgroundTint="@color/theme_color" />
        <TextView
            android:paddingRight="1dp"
            android:paddingLeft="1dp"
            android:layout_gravity="center"
            android:gravity="center"
            android:id="@+id/textView122"
            android:layout_width="wrap_content"
            android:layout_height="12dp"
            android:layout_marginTop="10dp"
            android:layout_weight="1"
            android:text="Fab lable"
            android:textColor="@color/theme_color"
            android:textSize="10sp"
            android:textStyle="bold" />
    </LinearLayout>

</RelativeLayout>

This is my main activity layout:

<android.support.design.widget.CoordinatorLayout xmlns:fab="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/coordinate_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <RelativeLayout
        android:id="@+id/relativeLayout1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="#0d4b70">

        <android.support.design.widget.AppBarLayout
            android:id="@+id/actionbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:theme="@style/MyMaterialTheme.AppBarOverlay">

            <include layout="@layout/toolbar_lable" />

        </android.support.design.widget.AppBarLayout>

        <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:tools="http://schemas.android.com/tools"
            android:id="@+id/rl_map_container"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_below="@+id/actionbar"
            android:background="#0d4b70">

            <fragment
                android:id="@+id/map"
                class="io.plite.customer.activities.MainActivity$CustomMapFragment"
                android:layout_width="match_parent"
                android:layout_height="fill_parent"
                android:layout_alignParentTop="true"
                tools:layout="@layout/abc_action_bar_title_item" />

            <ProgressBar
                style="@style/Base.Widget.AppCompat.ProgressBar.Horizontal"
                android:id="@+id/smoothprogressbar"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_alignParentTop="true"
                android:indeterminate="true"
                android:visibility="gone" />
            <!--app:spb_colors="@array/colors"-->
            <RelativeLayout
                android:id="@+id/rlSearch"
                android:layout_width="fill_parent"
                android:layout_height="50dp"
                android:layout_alignParentLeft="true"
                android:layout_alignParentRight="true"
                android:layout_margin="10dp"
                android:background="@drawable/shadow"
                android:visibility="visible">
                <ImageView
                    android:layout_marginLeft="15dp"
                    android:layout_height="wrap_content"
                    android:layout_width="wrap_content"
                    android:src="@drawable/ic_search_black_24dp"
                    android:layout_centerVertical="true"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentStart="true">
                    </ImageView>
                <TextView
                    android:gravity="center"
                    android:layout_marginLeft="45dp"
                    android:layout_marginRight="45dp"
                    android:id="@+id/svSearch"
                    android:textSize="14sp"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_centerVertical="true"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentStart="true" />
                <!--<SearchView
                    android:id="@+id/svSearch"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:focusable="false"
                    android:iconifiedByDefault="false" />-->
            </RelativeLayout>
            <TextView
                android:id="@+id/countuptimer"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_centerHorizontal="true"
                android:text="22:10:1991"
                android:textColor="@color/theme_color"
                android:textSize="50sp"
                android:visibility="invisible" />
            <FrameLayout
                android:id="@+id/fl_center"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerHorizontal="true"
                android:layout_centerInParent="true"
                android:layout_centerVertical="true">

                <ImageView
                    android:id="@+id/imageView1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerHorizontal="true"
                    android:layout_centerInParent="true"
                    android:layout_centerVertical="true"
                    android:layout_gravity="center"
                    android:gravity="center"
                    android:src="@drawable/flag_pickup"
                    android:visibility="gone" />
            </FrameLayout>
            <Chronometer
                android:id="@+id/chronometer"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:visibility="gone" />

            <android.support.design.widget.FloatingActionButton
                android:id="@+id/imgMyLocation"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:backgroundTint="@android:color/white"
                android:background="@color/white"
                android:elevation="10dp"
                android:src="@drawable/search_current_location"
                app:borderWidth="0dp"
                app:fabSize="mini"

                android:layout_alignParentBottom="true"
                android:layout_alignParentRight="true"
                android:layout_marginBottom="228dp"
                android:layout_marginRight="27dp" />

            <ImageView
                android:id="@+id/image_shadow"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerHorizontal="true"
                android:layout_centerVertical="true"
                android:src="@drawable/drop_pin_shadow"
                android:visibility="gone" />

            <FrameLayout
                android:id="@+id/design_bottom_sheet"
                style="?attr/bottomSheetStyle"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:layout_alignParentLeft="true"
                android:layout_gravity="center_horizontal" />

            <include
                layout="@layout/tab_switch"
                android:layout_width="match_parent"
                android:layout_height="40dp"
                android:layout_alignParentBottom="true"/>
        </RelativeLayout>

    </RelativeLayout>

    <include layout="@layout/new_bottom_sheet_linear"/>

</android.support.design.widget.CoordinatorLayout>

<android.support.design.widget.NavigationView
    android:id="@+id/nav_view"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:fitsSystemWindows="true"
    app:headerLayout="@layout/nav_header_main"
    app:menu="@menu/activity_main_drawer" />

I am replacing the framelayout in the main activity with the fragment consisting of above relative layout.

This is how it looks in my Moto g2 (6.0)

This is how it looks in my Moto g2 (6.0)

This is how it looks in Micromax canvas nitro This is how it looks in Micromax canvas nitro (4.4.2)

The alignment is totally gone in Micromax canvas nitro. I have also tried with Samsung Galaxy S dous (4.2.2), got the same layout issue.So my question is how can i change my layout to suit both the versions?

Upvotes: 0

Views: 93

Answers (1)

DsD
DsD

Reputation: 1121

You can specify different layout files (and place them in different resource folders) to support different versions of Android.

You can name your resource folders to as per the version number

/res/layout-v11
/res/values-v13

For more details regarding API levels, refer this.

In code, you can check the API version and can determine whether to show some advanced features.

private void setUpActionBar() {
    // Make sure we're running on Honeycomb or higher to use ActionBar APIs
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        ActionBar actionBar = getActionBar();
        actionBar.setDisplayHomeAsUpEnabled(true);
    }
}

Upvotes: 1

Related Questions