地图片段几乎填满了所有的屏幕

时间:2015-06-19 19:12:37

标签: android android-layout android-fragments layout

我正试图在MapFragment和简单TextView之间分享我的屏幕布局的高度,以便在底部的小TextView屏幕占用了所需的所有空间,而GoogleMap片段填充了可用屏幕的其余部分。

像这样:

enter image description here

唯一的问题是我只能通过在android:layout_height静态指定片段450dp来获得此类结果,而我还没有找到办法动态地,以便布局适应其landscape模式和具有不同屏幕尺寸的移动设备。

这是我试图做的事情:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_height="match_parent"
    android:layout_width="match_parent" tools:context="madapps.bicitourbo.DetailsFragmentTwo">

    <LinearLayout android:id="@+id/map"
        android:layout_height="wrap_content" android:layout_width="match_parent"
        android:orientation="vertical"
        android:weightSum="10">
        <!--android:paddingRight="16dp"-->
        <!--android:paddingLeft="16dp"-->

        <fragment xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/mapFrag"
            android:layout_height="0dp"
            android:layout_width="match_parent"
            android:layout_weight="9"
            android:name="com.google.android.gms.maps.MapFragment"/>

        <TextView android:id="@+id/headerTitle"
            android:gravity="center_horizontal"
            android:layout_height="0dp"
            android:layout_width="match_parent"
            android:text="Partenza da: Piazza Santo Stefano"
            android:textSize="@dimen/textSizeBig" android:textColor="@color/textLightBlack"
            android:layout_marginBottom="16dp"
            android:layout_marginTop="16dp"
            android:layout_weight="1"/>
    </LinearLayout>

</ScrollView>

这是不必要的结果:

enter image description here

3 个答案:

答案 0 :(得分:1)

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_height="match_parent"
android:layout_width="match_parent" tools:context="madapps.bicitourbo.DetailsFragmentTwo">

<LinearLayout android:id="@+id/map"
    android:layout_height="match_parent" android:layout_width="match_parent"
    android:orientation="vertical"
    android:weightSum="10">
    <!--android:paddingRight="16dp"-->
    <!--android:paddingLeft="16dp"-->

    <fragment xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/mapFrag"
        android:layout_height="0dp"
        android:layout_width="match_parent"
        android:layout_weight="9"
        android:name="com.google.android.gms.maps.MapFragment"/>

    <TextView android:id="@+id/headerTitle"
        android:gravity="center_horizontal"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:text="Partenza da: Piazza Santo Stefano"
        android:textSize="@dimen/textSizeBig" android:textColor="@color/textLightBlack"
        android:layout_marginBottom="16dp"
        android:layout_marginTop="16dp" 
        android:layout_weight="1"/>
</LinearLayout>

android:weightSum使LinearLayout的总重量为10。

因此fragment得到了9L的LinearLayout,TextView得到了布局的1/10。

答案 1 :(得分:0)

您可以将RelativeLayout用于此

    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="madapps.bicitourbo.DetailsFragmentTwo">

    <RelativeLayout
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <!--android:paddingRight="16dp"-->
        <!--android:paddingLeft="16dp"-->

        <TextView
            android:id="@+id/headerTitle"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_marginBottom="16dp"
            android:layout_marginTop="16dp"
            android:gravity="center_horizontal"
            android:text="Partenza da: Piazza Santo Stefano"
            android:textColor="@color/textLightBlack"
            android:textSize="@dimen/textSizeBig" />

        <fragment xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/mapFrag"
            android:name="com.google.android.gms.maps.MapFragment"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_above="@id/headerTitle" />
    </RelativeLayout>

</ScrollView>

答案 2 :(得分:0)

对我的问题的评论解决了这个问题。

android:layout_weight属性不起作用,因为将ScrollView作为根标记会阻止其影响。 通过将RelativeLayout作为根标记,weigth属性起作用,并且TextView应根据需要向上展开,同时地图将调整。