垂直LinearLayout中的垂直LinearLayout忽略布局:重量

时间:2016-03-04 16:46:13

标签: android android-layout

我试图创建一个带有附带标题的按钮网格。当我创建一个带有标题的按钮时,没有任何问题。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
    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="org.havenseedsforsuccess.havenseedsforsuccess.PlantList"
    android:background="@drawable/gradientfill">

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="What&apos;s Growing?"
        android:id="@+id/textPlantListTitle"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:textColor="@color/colorBrown"
        android:textSize="30dp"
        android:gravity="center"
        android:layout_marginBottom="10dp" />

    <ScrollView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/scrollView"
        android:fillViewport="true"
        android:layout_weight="9.25"
        android:layout_below="@+id/textPlantListTitle"
        android:layout_centerHorizontal="true">

        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:weightSum="2" >

            <LinearLayout
                android:orientation="vertical"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:weightSum="12"
                android:layout_marginRight="5dp" >

                <ImageButton
                    android:layout_width="fill_parent"
                    android:layout_height="0dp"
                    android:id="@+id/imageButton"
                    android:src="@drawable/plantfiller"
                    android:scaleType="fitCenter"
                    android:background="@android:color/transparent"
                    android:layout_weight="3.5" />

                <TextView
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:text="Plant Name"
                    android:id="@+id/textView4"
                    android:textColor="@color/colorBrown"
                    android:gravity="center"
                    android:textSize="20dp"
                    android:layout_weight=".5" />

             </LinearLayout>

        </LinearLayout>
    </ScrollView>
</RelativeLayout>

上面的代码为我提供了我正在寻找的布局:

enter image description here

但是,当我复制粘贴按钮/标题的垂直LinearLayout以在其下方创建第二个时,所有内容都变得难以捉摸并且变形。布局:重量不再被跟踪,每个按钮/标题LinearLayout占据屏幕的一半左右。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
    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="org.havenseedsforsuccess.havenseedsforsuccess.PlantList"
    android:background="@drawable/gradientfill">

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="What&apos;s Growing?"
        android:id="@+id/textPlantListTitle"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:textColor="@color/colorBrown"
        android:textSize="30dp"
        android:gravity="center"
        android:layout_marginBottom="10dp" />

    <ScrollView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/scrollView"
        android:fillViewport="true"
        android:layout_weight="9.25"
        android:layout_below="@+id/textPlantListTitle"
        android:layout_centerHorizontal="true">

        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:weightSum="2" >

            <LinearLayout
                android:orientation="vertical"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:weightSum="12"
                android:layout_marginRight="5dp" >

                <ImageButton
                    android:layout_width="fill_parent"
                    android:layout_height="0dp"
                    android:id="@+id/imageButton"
                    android:src="@drawable/plantfiller"
                    android:scaleType="fitCenter"
                    android:background="@android:color/transparent"
                    android:layout_weight="3.5" />

                <TextView
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:text="Plant Name"
                    android:id="@+id/textView"
                    android:textColor="@color/colorBrown"
                    android:gravity="center"
                    android:textSize="20dp"
                    android:layout_weight=".5" />

                <ImageButton
                    android:layout_width="fill_parent"
                    android:layout_height="0dp"
                    android:id="@+id/imageButton2"
                    android:src="@drawable/plantfiller"
                    android:scaleType="fitCenter"
                    android:background="@android:color/transparent"
                    android:layout_weight="3.5" />

                <TextView
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:text="Plant Name"
                    android:id="@+id/textView2"
                    android:textColor="@color/colorBrown"
                    android:gravity="center"
                    android:textSize="20dp"
                    android:layout_weight=".5" />


             </LinearLayout>

        </LinearLayout>
    </ScrollView>
</RelativeLayout>

上面的代码给了我这个:

enter image description here

1 个答案:

答案 0 :(得分:0)

您的问题是<ScrollView>。您正尝试使用<weight>标记调整按钮的大小,但<ScrollView>会使您的屏幕无限,因此Android只是不会调整大小。

只需删除<ScrollView>,我认为您将实现您想要的效果。

如果以某种方式需要<ScrollView>您需要大量按钮,请使用Google Play风格进行一些研究并检查屏幕尺寸,并为每个屏幕尺寸设置<weight>一个固定值,因为您如果所有按钮都显示在屏幕上,请不要担心。