Элемент 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.