Я много искал, но похоже, что это в каждом конкретном случае.Мой случай состоит в том, чтобы использовать RecyclerView
с CardView
и поместить их все в NestedScrollView
, чтобы его можно было прокручивать одновременно.
Вот скриншот видео: https://www.dropbox.com/s/sf3nixef6myfvh4/20190212_161401_edited.mp4?dl=0
Вот мой макет активности:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/aImageView"/>
<android.support.v4.widget.NestedScrollView
android:id="@+id/nestedScrollView"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/aImageView">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<ImageView
android:id="@+id/primaryImageView"
android:layout_width="match_parent"
android:layout_height="120dp"
android:contentDescription="@string/primaryimageview"
android:scaleType="centerCrop"
app:srcCompat="@drawable/..." />
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!-- many textviews, imageviews... -->
</android.support.constraint.ConstraintLayout>
<android.support.v7.widget.RecyclerView
android:id="@+id/rv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="44dp"/>
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
</android.support.constraint.ConstraintLayout>
, и я сделал это в файле активности java:
// card view through recycler view
RecyclerView rv = findViewById(R.id.rv);
rv.setLayoutManager(new GridLayoutManager(context, 2));
rv.setNestedScrollingEnabled(false);
rv.setHasFixedSize(true);
CardViewMainAdapter cardViewMainAdapter = new CardViewMainAdapter();
rv.setAdapter(cardViewMainAdapter);
также, для cardView,
<!-- see https://developer.android.com/guide/topics/ui/layout/cardview -->
<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/card_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
app:cardCornerRadius="8dp"
app:cardElevation="2dp"
app:cardMaxElevation="4dp"
app:cardUseCompatPadding="true"
app:cardPreventCornerOverlap="true">
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- Image views, text views... -->
</android.support.constraint.ConstraintLayout>
</android.support.v7.widget.CardView>
все выглядит отлично, он прокручивается в целом, но на самом деле, мой адаптер имеет данные для 6 просмотров карт, но только 2 просмотра карт отображаются в режиме рециркуляции.(Итак, всего одна строка с 2 столбцами.) Похоже, что вся высота вложенного представления прокрутки - это только высота экрана (кроме панели приложения).
Я подтвердил, что при загрузке этого действия все6 CardViewMainViewHolder
объекты создаются внутри CardViewMainAdapter
класса.
Я попытался добавить app:layout_behavior="@string/appbar_scrolling_view_behavior"
, но это не помогло.
Я сделал самый внешний макет как линейный макет для макета активностино не сработало.
По словам инспектора макета, есть только два просмотра карт (один ряд).
Еще один вопрос ... Я хочу сделать цвет темно-серый междукарта просмотров.Я пытался найти, чтобы поставить цвет фона, но это было не легко.в iOS это было очень просто - просто установите цвет фона любого подходящего вида, чтобы этот цвет работал ... но android, ну, я не знаю.Constraintlayout
или NestedScrollView
, либо LinearLayout
... не имеют атрибутов цвета.Как?
Третий вопрос (поскольку он связан) заключается в том, что ... при первом показе действия вложенное представление прокрутки уже прокручивается ... почему?и как это исправить?scrollTo (0,0) не работает.