2012-02-20 5 views
2

У меня очень странная проблема с FrameLayout с ScrollView. Моя раскладка выглядит следующим образом:ScrollView внутри FrameLayout макет маржа выпуск

<FrameLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <ScrollView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     android:layout_marginTop="50dp"> 
     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:orientation="vertical"> 
    </LinearLayout> 
    </ScrollView> 

    <... 
    /> 
</FrameLayout> 

вопрос, который у меня есть с: layout_marginTop атрибута на ScrollView тега. Он не применяется одинаково на разных устройствах. Например, на Nexus S (работает ICS) он интерпретируется правильно, добавляя некоторое пространство на экране, а на другом (Galaxy S2 работает Gingerbread) он создает пространство в нижней части экрана, а не в верхней части экрана.

Любая идея?

Спасибо!

[EDIT]

  • Кажется, что проблема является общим для всех устройств, работающих в Android версии ниже 3.0.

  • Спасибо за то, что вы заметили эти лишние атрибуты, не похоже, что они были здесь, потому что раньше FrameLayout был обернут внутри LinearLayout.

+0

Макет может быть сложным. FrameLayout не имеет атрибута «ориентация», и если он не является дочерним элементом LinearLayout, атрибут layout_gravity также не будет иметь никакого эффекта. Я предлагаю использовать твердые цвета фона, чтобы увидеть, что происходит на самом деле ... Я подозреваю, что это не то, что вы думаете. –

+0

@ReubenScratton Это на самом деле ребенок другого «FrameLayout» (должен был упомянуть об этом). Я удалил все эти дополнительные атрибуты, как вы предложили. Попробуем использовать сплошные цвета фона, чтобы увидеть, что происходит. Благодарю. –

ответ

1

Fixed его с помощью android:paddingTop на ScrollView вместо android:layout_marginTop.

<FrameLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <ScrollView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     android:layout_paddingTop="50dp"> 
     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:orientation="vertical"> 
    </LinearLayout> 
    </ScrollView> 

    <... 
    /> 
</FrameLayout> 
1

попробовать android:fillViewPort=true

+0

Просто попробовал. Ничего не изменилось. –

2

Нет использования android:layout_gravity="center_vertical" с android:layout_width="match_parent". Это неважно.

Попробуйте использовать android:paddingTop="50dp" в FrameLayout вместо android:layout_marginTop="50dp" в ScrollView

<FrameLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:paddingTop="50dp"> 
    <ScrollView 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:orientation="vertical" 
      > 
     <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:orientation="vertical" 
       > 
     </LinearLayout> 
    </ScrollView> 
+0

Не являются ли 'fill_parent' и' match_parent' то же самое? Я удалил все дополнительные атрибуты. Попробуем добавить paddingTop в 'FrameLayout', спасибо! –

+0

Они [идентичны] (http://stackoverflow.com/questions/5761960/what-is-the-difference-between-match-parent-and-fill-parent-property-in-android) –

Смежные вопросы