android XML布局适合任何屏幕(线性或相对)

时间:2016-01-28 19:31:54

标签: android xml android-layout android-fragments

美好的一天,我有一个看起来像这样的线性布局

Linea Layout

在片段区域中有一个谷歌地图的片段,我想要的是一个布局,使片段使用屏幕中的可用空间而不会将其余元素推出,所以在某些屏幕中地图会比其他地方高,我现在的布局,它使用固定的layout_height为地图,我想要一些动态,所以我可以删除scrollview标签

这是我目前的xml

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="xxxxxxxxx">

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

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

        <LinearLayout
            android:id="@+id/xxxxxxx"
            android:visibility="visible"
            android:layout_width="match_parent"
            android:paddingTop="8dp"
            android:paddingBottom="8dp"
            android:background="@color/app_blue_dark"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:orientation="horizontal">

            <TextView
                android:id="@+id/xxxxxxx"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textStyle="bold"
                android:gravity="center"
                android:textColor="@color/solid_white"
                android:drawableLeft="@drawable/xxxxxxxx"
                android:text="xxxxxxxxx" />

        </LinearLayout>

        <LinearLayout
            android:layout_margin="@dimen/activity_vertical_margin"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <android.support.v7.widget.SwitchCompat
                android:id="@+id/xxxxxxxx"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:textColor="#666"
                android:text="@string/xxxxxxx"/>

        </LinearLayout>

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

            <android.support.v7.widget.AppCompatButton
                android:id="@+id/xxxxxxxx"
                android:textColor="@color/solid_white"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="xxxxxxxxx"
                android:layout_marginLeft="@dimen/activity_vertical_margin"
                android:text="@string/xxxxxxxx"
                android:layout_weight="50"
                android:drawableLeft="@drawable/xxxxxxxxxx" />

            <android.support.v7.widget.AppCompatButton
                android:id="@+id/xxxxxxxxx"
                android:drawablePadding="0dp"
                android:textColor="@color/solid_white"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/xxxxxxxx"
                android:onClick="xxxxxxxxx"
                android:layout_marginRight="@dimen/activity_vertical_margin"
                android:layout_weight="50"
                android:drawableLeft="@drawable/xxxxxxx" />

        </LinearLayout>


        <RelativeLayout
            android:id="@+id/xxxxxxx"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingLeft="@dimen/activity_horizontal_margin"
            android:paddingRight="@dimen/activity_horizontal_margin"
            android:paddingBottom="0dp"
            android:layout_margin="0dp"
            android:paddingTop="@dimen/activity_vertical_margin">
            <TextView
                android:id="@+id/xxxxxxx"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="xxxxxxxx"
                android:layout_marginTop="@dimen/activity_vertical_margin" />
            <android.support.v7.widget.AppCompatImageButton
                android:id="@+id/xxx"
                android:layout_alignParentRight="true"
                android:layout_width="wrap_content"
                android:onClick="xxxxxxxx"
                android:layout_height="wrap_content"
                android:src="@drawable/xxxxxxxxx" />
        </RelativeLayout>

        <fragment
            android:id="@+id/map"
            android:layout_marginTop="@dimen/activity_vertical_margin"
            android:name="com.google.android.gms.maps.SupportMapFragment"
            android:layout_width="match_parent"
            android:layout_height="275dp" />

        <LinearLayout
            android:id="@+id/xxxx"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:padding="@dimen/activity_vertical_margin">
            <TextView
                android:textStyle="bold"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="xxxxxx" />
            <TextView
                android:id="@+id/xxxx"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="xxxxxxxxxxxxxx"
                android:lines="2" />
        </LinearLayout>

    </LinearLayout>
</ScrollView>

感谢您的帮助!!

2 个答案:

答案 0 :(得分:1)

您可以设置android:weight="1"android:height="0dp"。这样,地图将占用所需的空间,而其余视图则按原样显示。这样您就可以删除ScrollView。

答案 1 :(得分:0)

在片段中创建线性布局,然后将Google地图设置为填充父级,因为您的主要布局是线性布局