在不同的Android版本中使用相对布局的对齐问题

时间:2016-08-18 06:45:26

标签: android android-layout relativelayout

我使用相对布局来复制fab锚定的效果。     以下是我的布局代码。          

    <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>

这是我的主要活动布局:

<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" />

我将主活动中的framelayout替换为包含上述相对布局的片段。

这就是我的Moto g2(6.0)

的样子

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

这就是它在Micromax canvas nitro中的外观 This is how it looks in Micromax canvas nitro (4.4.2)

Micromax帆布硝基中的对齐完全消失。我也试过三星Galaxy S dous(4.2.2),得到了相同的布局问题。所以我的问题是如何更改我的布局以适应这两个版本?

1 个答案:

答案 0 :(得分:1)

您可以指定不同的布局文件(并将它们放在不同的资源文件夹中)以支持不同版本的Android。

您可以根据版本号

将资源文件夹命名为
/res/layout-v11
/res/values-v13

有关API级别的更多详细信息,请参阅this

在代码中,您可以检查API版本,并确定是否显示某些高级功能。

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);
    }
}