2011-09-20 3 views
0

Короткий вопрос: я хочу, чтобы фрагмент, находящийся внутри прокрутки, занимал все свободное пространство. Как я могу это достичь?Фрагмент внутри ScrollView слишком мал

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

the fragment, or the scroll view, doesn't take the whole space

Это XML для фрагмента:

<?xml version="1.0" encoding="utf-8"?> 
<GridView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/ImagePickerGridView" android:orientation="vertical" 
    android:layout_width="fill_parent" android:layout_height="fill_parent" 
    android:gravity="center" android:stretchMode="columnWidth" 
    android:numColumns="auto_fit" android:horizontalSpacing="5dp" 
    android:verticalSpacing="5dp" android:background="@color/orange1"> 
</GridView> 

Это XML для родительского компоновщика:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/LinearLayout1" android:orientation="vertical" 
    android:layout_width="fill_parent" android:layout_height="fill_parent" 
    android:gravity="center" android:stretchMode="columnWidth" 
    android:numColumns="auto_fit" android:horizontalSpacing="5dp" 
    android:verticalSpacing="5dp"> 
    <ScrollView android:layout_width="match_parent" 
     android:id="@+id/imagePickerScrollView" android:layout_weight="1.0" 
     android:layout_height="match_parent" android:background="@color/orange1" android:layout_gravity="fill_vertical"> 
    </ScrollView> 
    <LinearLayout android:id="@+id/linearLayout3" 
     android:layout_width="match_parent" android:layout_height="wrap_content" 
     android:background="@color/blue1"> 
     <Button android:layout_height="wrap_content" 
      android:layout_width="wrap_content" android:layout_weight="1.0" 
      android:text="@string/ImportSelectedButton" android:id="@+id/importSelectedButton" 
      android:layout_marginLeft="@dimen/standardMargin" 
      android:layout_marginTop="@dimen/standardMargin" 
      android:layout_marginBottom="@dimen/standardMargin" android:onClick="onImportSelected"></Button> 
     <Button android:layout_height="wrap_content" 
      android:layout_width="wrap_content" android:layout_weight="1.0" 
      android:text="@string/CancelButton" android:id="@+id/cancelButton" 
      android:layout_marginRight="@dimen/standardMargin" 
      android:layout_marginTop="@dimen/standardMargin" 
      android:layout_marginBottom="@dimen/standardMargin" android:onClick="onCancel"></Button> 
    </LinearLayout> 
</LinearLayout> 

И, наконец, это как я добавляю фрагмент к активности:

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.image_picker_1); 

    Log.d(CLASS_NAME, "onCreate"); 

    m_multiPicSelect = getIntent().getBooleanExtra(IntentHelper.MULTI_SELECT, false); 
    FragmentManager fragmentManager = getSupportFragmentManager(); 
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 

    Fragment fragment = new ImagePickerFragment(); 
    fragmentTransaction.add(R.id.imagePickerScrollView, fragment); 
    fragmentTransaction.commit(); 
} 

ответ

0

ОК, я узнал, что была проблема. Оказывается, что GridView является прокручиваемым контейнером, поэтому его не нужно было помещать внутри ScrollView. Когда я поместил сетку в линейный макет, все сработало! Я до сих пор не знаю, почему GridView сжался внутри ScrollView, может быть, потому, что не должен был быть там в первую очередь :)

Спасибо всем за ваши ответы!

0

попробовать это ::

<ScrollView android:layout_width="fill_parent" 
     android:id="@+id/imagePickerScrollView" android:layout_weight="1.0" 
     android:layout_height="fill_parent" android:background="@color/orange1" android:layout_gravity="fill_vertical"> 
    </ScrollView> 
+0

Нет, это не работает ... Однако, я думаю, что нашел ответ. Я не понимал, что GridView - это прокручиваемый контейнер! Я отправлю решение через минуту. Благодаря! – Macondo2Seattle

0

..., как @nik сказал, но и добавить android:fillViewport="true"

+0

спасибо! как оказалось, проблема заключалась в помещении GridView внутри ScrollView. Я объясняю это в отдельном ответе. – Macondo2Seattle

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