2013-06-02 4 views
8

У меня внезапно возникает проблема, что Scrollview выходит за пределы экрана, так что даже если вы прокрутите весь путь вниз, он не отобразит весь контент. XML:Scrollview выходит за пределы нижней части экрана

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#FFFFFFFF"> 
    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_margin="15dp" 
     android:background="#FFBBBBBB" 
     android:orientation="vertical" > 
     <View 
      android:layout_width="100dp" 
      android:layout_height="300dp" 
      android:layout_margin="15dp" 
      android:layout_gravity="center_horizontal" 
      android:background="#FFDDDDFF"/> 
     <View 
      android:layout_width="100dp" 
      android:layout_height="300dp" 
      android:layout_margin="15dp" 
      android:layout_gravity="center_horizontal" 
      android:background="#FFDDDDFF"/> 
    </LinearLayout> 
</ScrollView> 

Это не получается проще. После того, как вы прокручивать весь путь вниз (как указано в форме скроллера) вы должны увидеть нижний белый запас, но вместо того, чтобы это то, что он выглядит следующим образом:

bottom of the scrollview

Сравнить с верхней:

top of the scrollview

Дно должно выглядеть как верх, только наоборот. Это происходит в эмуляторе, на реальных устройствах и почти в каждой версии Android, которую я пробовал. Я не понимаю, что я делаю неправильно (если что-нибудь ...).

Пожалуйста, никаких догадок и стрельбы из бедра! Только проверенные ответы. Я потратил достаточно времени на это уже так, как есть. Благодарю.

ответ

0

попробуйте поместить прописку в нижней части прокрутки, чтобы вы увидели белую линию внизу - ваш взгляд действительно прокручивает весь путь вниз, я пробовал его с помощью этого кода, и результат следующий:

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 

    android:background="#FFFFFFFF" 
    android:padding="5dp" > 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_margin="15dp" 
    android:background="#FFBBBBBB" 
    android:orientation="vertical" > 

    <View 
     android:layout_width="100dp" 
     android:layout_height="1500dp" 
     android:layout_gravity="center_horizontal" 
     android:layout_margin="15dp" 
     android:background="#FFDDDDFF" /> 

    <View 
     android:layout_width="100dp" 
     android:layout_height="300dp" 
     android:layout_gravity="center_horizontal" 
     android:layout_margin="15dp" 
     android:background="#FFDDDDFF" /> 

    <View 
     android:layout_width="100dp" 
     android:layout_height="10dp" 
     android:layout_gravity="center_horizontal" 
     android:layout_margin="15dp" 
     android:background="#FF00FF00" /> 
</LinearLayout> 

enter image description here

+0

После того, как на самом деле можно попробовать играть в игры, как это, но это хак, а не верное решение. – olefevre

+0

PS: Увидеть немного белого внизу - это не самоцель! Так как есть край со всех сторон LinearLayout, видя, что нижний край является признаком того, что вы действительно достигли дна; это все. – olefevre

7

После тратить много времени на мертвых переулков я наконец-то на правильном пути к этому other SO thread: вопрос был запас расположение на LinearLayout. Очевидно, ScrollView не нравится, так же, как не нравится, когда его ребенок центрируется (проблема помечена многими другими людьми, но не моя проблема здесь), и кто знает, что еще. Очень разборчивый виджет. Именно такие проблемы заставляют меня пересмотреть мою приверженность Android: это слишком трудоемко по сравнению с альтернативными платформами, и даже если вам нравится вызов, время - деньги.

В любом случае, в интересах тех, кто будет на флопе здесь позже, здесь показана демонстрация сломанной компоновки (более простая версия выше) слева и рабочая справа. Хитрость заключается в том, чтобы эмулировать запас verboten с заполнением на дополнительном контейнере.

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="#00FFFF" 
    android:orientation="horizontal" 
    android:baselineAligned="false"> 
    <ScrollView   
     android:layout_width="0dp" 
     android:layout_weight="1"  
     android:layout_height="match_parent" 
     android:background="#FFFFFFFF"> 
     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_margin="15dp" 
      android:background="#FFBBBB22" 
      android:orientation="vertical"> 
      <View 
       android:layout_width="100dp" 
       android:layout_height="1000dp" 
       android:layout_margin="15dp" 
       android:layout_gravity="center_horizontal" 
       android:background="#FFDDDDFF"/> 
     </LinearLayout> 
    </ScrollView> 
    <View 
     android:layout_width="1dp" 
     android:layout_height="match_parent" 
     android:background="#FF000000"/> 
    <ScrolllView 
     android:layout_width="0dp" 
     android:layout_weight="1" 
     android:layout_height="match_parent" 
     android:background="#FFFFFFFF"> 
     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:padding="15dp" 
      android:background="#FFFFFF" 
      android:orientation="vertical"> 
      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:background="#FFBBBB22" 
       android:orientation="vertical"> 
       <View 
        android:layout_width="100dp" 
        android:layout_height="1000dp" 
        android:layout_margin="15dp" 
        android:layout_gravity="center_horizontal" 
        android:background="#FFDDDDFF"/> 
      </LinearLayout> 
     </LinearLayout> 
    </ScrollView> 
</LinearLayout> 
0

Просто попробуйте поставить LinearLayout внутри другого Как это:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#FFFFFFFF"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_margin="15dp" 
      android:background="#FFBBBBBB" 
      android:orientation="vertical"> 

      <View 
       android:layout_width="100dp" 
       android:layout_height="300dp" 
       android:layout_gravity="center_horizontal" 
       android:layout_margin="15dp" 
       android:background="#FFDDDDFF" /> 

      <View 
       android:layout_width="100dp" 
       android:layout_height="300dp" 
       android:layout_gravity="center_horizontal" 
       android:layout_margin="15dp" 
       android:background="#FFDDDDFF" /> 
     </LinearLayout> 
    </LinearLayout> 
</ScrollView> 
Смежные вопросы