Добавление верхнего и нижнего колонтитулов в gridview в Android

#android #gridview #footer #instagram

#Android #gridview #нижний колонтитул #Instagram

Вопрос:

Я пытаюсь создать страницы профилей пользователей в своем приложении для Android со следующими функциями: — заголовок — просмотр сетки, показывающий кучу фотографий из этого пользователя — нижний колонтитул (значок загрузки, когда приложение загружает больше фотографий в gridview) — заголовок должен перемещаться вместе с gridview

Другими словами, пользовательский интерфейс на странице профиля будет очень похож на пользовательский интерфейс на странице профиля пользователя Instagram.

Проблема в том, что gridview не поддерживает верхние и нижние колонтитулы.

Какие-либо решения или библиотеки, которые я мог бы использовать для обеспечения желаемого пользовательского интерфейса?

Ответ №1:

Просто используйте несколько RelativeLayouts.

Создайте свой макет заголовка (50dp или любой другой), выровненный по родительскому началу. Затем создайте второй макет, выровненный по нижней части страницы (это будет ваш нижний колонтитул). Затем установите другой макет «ниже» верхнего колонтитула и «выше» нижнего колонтитула, который будет содержать ваш GridView.

Это должно выглядеть так:

 <RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <RelativeLayout
        android:id="@ id/header"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_alignParentTop="true" >

        /* ANYTHING YOU WANT IN YOUR HEADER */

    </RelativeLayout>

    <RelativeLayout
        android:id="@ id/gridview"
        android:layout_width="match_parent"
        android:layout_height="fill_parent"
        android:layout_below="@ id/header"
        android:layout_above="@ id/footer" >

        /* GRIDVIEW HERE */

    </RelativeLayout>

    <RelativeLayout
        android:id="@ id/footer"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_alignParentBottom="true" >

        /* ANYTHING YOU WANT IN YOUR FOOTER */

    </RelativeLayout>

</RelativeLayout>
 

Надеюсь, это поможет.

Комментарии:

1. Спасибо! Я внедрил это решение и добился огромного прогресса. Единственная проблема, с которой я сталкиваюсь, заключается в том, что нижний колонтитул (значок загрузки) отображается над gridview, а не под gridview. С этим вы тоже сталкивались? Спасибо!

2. @user3399451 вам нужно либо установить gridview «над» нижним колонтитулом, либо установить нижний колонтитул «под» gridview. Оба должны работать.

3. @user3399451 также имейте в виду, что порядок, в котором вы объявляете свои объекты, важен. Все, что находится в нижней части вашего XML-файла, будет сверху. Это точно так же, как слои Photoshop.

4. ну, в моем случае это не сработало. Вот мой XML-код — gist.github.com/ramswaroop/4b5693e45656a3a1fe93 Можете ли вы сказать мне, где я ошибаюсь? Это потому RelativeLayout , что находится внутри a LinearLayout ?

5. Скорее всего, да. Я считаю, что вам нужно иметь RelativeLayout в качестве родительского макета, чтобы это работало.