2012-04-25 3 views
44

Я хочу назначить весы макета нескольким элементам в пределах LinearLayout внутри ScrollView. Однако ScrollView игнорирует LinearLayoutweightSum.Макет Макеты не работают внутри ScrollView

Моя цель состоит в том, чтобы разделить макет с весами 2, 1, 1 (на общую сумму 4), но это не работает должным образом внутри ScrollView.

Как решить эту проблему с макетом?

main.xml

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/scrollView1" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:orientation="vertical" 
     android:weightSum="4"> 

     <LinearLayout android:id="@+id/logo" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" 
      android:layout_weight="2" 
      android:background="#FFFFFF" /> 

     <LinearLayout android:id="@+id/logo1" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" 
      android:layout_weight="1" 
      android:background="#000000" /> 


     <LinearLayout android:id="@+id/logobutton" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal" 
      android:layout_weight="1" 
      android:background="#4B4B4B" /> 

    </LinearLayout> 
</ScrollView> 
+0

, если я удаление только Scrollview, чем работа, но мой вопрос, если использование утра Scrollview, чем не работать –

+0

проверить это: [Android Layout Вес] (http://stackoverflow.com/questions/4986861/ android-layout-weight) Я думаю, что это одна и та же проблема. – user1264255

ответ

137

Я столкнулся с этой проблемой раньше. Просто используйте android:fillViewport="true" в вашем ScrollView, и он заполнит экран.

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/scrollView1" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:fillViewport="true" > 
+1

@MIPTECH: попробуйте этот ответ. Больше информации на сайте romain guy http://www.curious-creature.org/2010/08/15/scrollviews-handy-trick/ – Akhil

+2

+1 Работаю как шарм .. Спасибо !!! – Venky

+0

Спасибо, человек, я действительно искал решение, и это именно то, что мне нужно. –

2

Это не будет работать, как вы сделали это. Детский вид ScrollView должен быть установлен в wrap_content. Если вы установите его на fill_parent, он заполнит область ScrollView и никогда не будет прокручиваться, потому что она не будет больше, чем ScrollView.

Идея layout_weight заключается в том, чтобы заполнить определенную область пропорционально.

Вы должны установить все ребенка LinearLayoutslayout_height либо wrap_content или конкретный размер (в дп) и родительский LinearLayoutlayout_height в wrap_content

Как сказал вам нужно удалить дополнительный

Xmlns : android = "http://schemas.android.com/apk/res/android"

если это не корень (ель st) элемент макета.