Элемент Android Material Signature со списком

У меня есть макет, который состоит из обложки (изображение героя), панели инструментов и списка.

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

в приложении Google I / O 2014 вы можете увидеть эту функцию в разделе активности сеанса. Проблема в том, что они используют ScrollView, в котором есть все.

Как вы можете сделать то же самое со списком вместо?

[РЕДАКТИРОВАТЬ]: после выпуска новой библиотеки поддержки дизайна ( http://android-developers.blogspot.co.uk/2015/05/android-design-support-library.html) решение использует макет координатора с рециркуляцией. Но все равно спасибо @Endor!

1 ответ

Решение

Вы можете использовать FrameLayout как корень, добавьте ImageView в качестве первого ребенка для обложки, а затем добавить ListView как второй ребенок.

Как это:

<merge xmlns:android="http://schemas.android.com/apk/res/android" >

    <TextView
        android:id="@+id/tv_splash"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/holo_blue_light"
        android:gravity="center"
        android:text="@string/app_name"
        android:textColor="@android:color/black"
        android:textSize="24sp" >
    </TextView>

    <ListView
        android:id="@+id/lv_item"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:divider="#CA8500"
        android:dividerHeight="1dp" >
    </ListView>

</merge>

Очевидно, что ListView будет блокировать ImageView, поэтому хитрость здесь заключается в том, чтобы добавить прозрачный заголовок в ListView с той же высотой, что и у обложки ImageView.

Затем, когда пользователь прокручивает ListView, ImageView будет покрыто реальным содержимым ListView.

Другие вопросы по тегам