2016-03-04 135 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

這個想法是,我會有兩列按鈕延伸到屏幕的底部,然後用戶可以向下滾動以查看更多。我不確定我需要多少個按鈕,但我擔心試圖在屏幕的單個框架中安裝太多按鈕會使屏幕顯得雜亂無章。 –