ScrollView внутри проблемы отступа макета FrameLayout - PullRequest
2 голосов
/ 20 февраля 2012

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

<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.

Ответы [ 3 ]

2 голосов
/ 20 февраля 2012

Не использовать 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>
1 голос
/ 20 февраля 2012

Исправлено с помощью 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 голос
/ 20 февраля 2012

попробуй android:fillViewPort=true

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...