2016-03-04 132 views
1

我试图创建一个带有标题的按钮网格。当我用它的标题创建一个按钮时,没有问题。垂直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/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

+0

你能展示一幅真正的图画吗?我问,因为我不知道为什么你需要这么多的垂直布局。 –

+0

我添加了图片。我想我的名声太低,无法添加任何实际图片,因此它们处于链接形式。 –

+0

为什么你有3个LinearLayouts在彼此之内? –

回答

0

你的问题是<ScrollView>。您正尝试使用<weight>标记调整按钮的大小,但<ScrollView>会使您的屏幕变得无限,所以android不会调整大小。

只要删除<ScrollView>,我认为你会达到你想要的。

如果以某种方式需要<ScrollView>您需要很多按Google Play样式的按钮,请进行一些调查和检查屏幕尺寸,并且为每个屏幕尺寸制定<weight>固定值,因为您不必担心if所有按钮都显示在屏幕上。

+0

因此,我不应该使用重量,而是应该为每个屏幕尺寸设置高度? –

+0

这取决于您是否想要使用ScrollView,并仍然使用例如4个按钮完全填充屏幕。如果你要制作很多像第一个按钮一样的按钮,只需要移除scrollView即可。 –

+0

这个想法是,我会有两列按钮延伸到屏幕的底部,然后用户可以向下滚动以查看更多。我不确定我需要多少个按钮,但我担心试图在屏幕的单个框架中安装太多按钮会使屏幕显得杂乱无章。 –