Фрагмент внутри ScrollView слишком мал - PullRequest
0 голосов
/ 20 сентября 2011

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

Подробности: у меня есть фрагмент, который я помещаю в 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();
}

Ответы [ 3 ]

0 голосов
/ 20 сентября 2011

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

0 голосов
/ 20 сентября 2011

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

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

0 голосов
/ 20 сентября 2011

попробуйте это ::

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...