Я работаю с представлением переработчика, которое содержит другое представление переработчика. Моя проблема заключается в том, что высота содержимого рециркулятора изменяется после прокрутки вниз или вверх основного окна рециркуляции. Каждый элемент уменьшает свою высоту после прокрутки вниз или вверх по главному представлению переработчика.
Это макет просмотра, содержащий переработчика:
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/cardview1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@color/colorWhite"
android:padding="10dp">
<ImageView
android:id="@+id/profile_image"
android:layout_width="match_parent"
android:layout_height="250dp"
android:layout_gravity="center"
android:scaleType="centerCrop"
android:visibility="visible"
app:srcCompat="@mipmap/ic_launcher" />
<com.google.android.exoplayer2.ui.SimpleExoPlayerView
android:id="@+id/exo_player_view"
android:layout_width="match_parent"
android:layout_height="250dp"
android:visibility="visible">
</com.google.android.exoplayer2.ui.SimpleExoPlayerView>
<com.pierfrancescosoffritti.androidyoutubeplayer.core.player.views.YouTubePlayerView
android:id="@+id/youtube_player_view"
android:layout_width="match_parent"
android:layout_height="250dp"
android:layout_gravity="center_horizontal"
android:visibility="visible"
app:autoPlay="false"
app:showFullScreenButton="false" />
</androidx.cardview.widget.CardView>
Этот адаптер для содержащего просмотра переработчика:
public class PostMediaAdapter extends RecyclerView.Adapter<PostMediaAdapter.ProductViewHolder> {
public static String MISDATOS= "MisDatos";
private Context mCtx;
private List<MediaPost> mediaList;
private final static String expression = "(?<=watch\\?v=|/videos/|embed\\/|youtu.be\\/|\\/v\\/|\\/e\\/|watch\\?v%3D|watch\\?feature=player_embedded&v=|%2Fvideos%2F|embed%\u200C\u200B2F|youtu.be%2F|%2Fv%2F)[^#\\&\\?\\n]*";
SimpleExoPlayerView exoPlayerView;
SimpleExoPlayer exoPlayer;
SharedPreferences prefs;
SharedPreferences.Editor editor;
LinearLayout linear;
public FragmentManager f_manager;
public PostMediaAdapter(Context mCtx, List<MediaPost> mediaList) {
this.mCtx = mCtx;
this.mediaList = mediaList;
}
@Override
public ProductViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.posts_media_list, null);
Log.d(("crear spot"),"ich bin in" +"PostMediaAdapter");
DisplayMetrics displayMetrics = new DisplayMetrics();
WindowManager windowmanager = (WindowManager) mCtx.getSystemService(Context.WINDOW_SERVICE);
windowmanager.getDefaultDisplay().getMetrics(displayMetrics);
int deviceWidth = displayMetrics.widthPixels;
Log.d("HOLA PERFIL", "deviceWidth " +deviceWidth);
view.setLayoutParams(new RecyclerView.LayoutParams(deviceWidth, ViewGroup.LayoutParams.MATCH_PARENT));
return new ProductViewHolder(view);
}
@Override
public void onBindViewHolder(ProductViewHolder holder, int position) {
MediaPost media = mediaList.get(position);
String tipo = media.getUsers1();
String archivo = media.getUsers2();
Log.d("HOLA PERFIL", "deviceWidth tipo media " +tipo);
Log.d("HOLA PERFIL", "deviceWidth tipo archivo " +archivo);
if (tipo.equals("video")){
holder.imageView.setVisibility(View.GONE);
// holder.youTubePlayerView.setVisibility(View.GONE);
holder.exoPlayerView.setVisibility(View.VISIBLE);
Log.d("HOLA PERFIL", "tipo video " +media.getUsers2());
try {
BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
TrackSelector trackSelector = new DefaultTrackSelector(new AdaptiveTrackSelection.Factory(bandwidthMeter));
exoPlayer = ExoPlayerFactory.newSimpleInstance(mCtx, trackSelector);
Uri video=Uri.parse(media.getUsers2());
Uri videoURI = video;
DefaultHttpDataSourceFactory dataSourceFactory = new DefaultHttpDataSourceFactory("exoplayer_video");
ExtractorsFactory extractorsFactory = new DefaultExtractorsFactory();
MediaSource mediaSource = new ExtractorMediaSource(videoURI, dataSourceFactory, extractorsFactory, null, null);
holder.exoPlayerView.setPlayer(exoPlayer);
exoPlayer.prepare(mediaSource);
exoPlayer.setPlayWhenReady(false);
holder.exoPlayerView.setBackgroundResource(grey_900);
}catch (Exception e){
Log.e("MainAcvtivity"," exoplayer error "+ e.toString());
}
}
if (tipo.equals("imagen")){
Log.d("HOLA PERFIL", "tipo imagen " +media.getUsers2());
holder.imageView.setVisibility(View.VISIBLE);
holder.exoPlayerView.setVisibility(View.GONE);
holder.youTubePlayerView.setVisibility(View.GONE);
Glide.with(mCtx)
.load(media.getUsers2())
.into(holder.imageView);
}
if (tipo.equals("vacio")){
holder.imageView.setVisibility(View.GONE);
holder.exoPlayerView.setVisibility(View.GONE);
holder.youTubePlayerView.setVisibility(View.GONE);
holder.linear.setVisibility(View.GONE);
}
if (tipo.equals("youtube")){
holder.imageView.setVisibility(View.GONE);
holder.exoPlayerView.setVisibility(View.GONE);
holder.youTubePlayerView.setVisibility(View.VISIBLE);
Log.d("HOLA PERFIL", "tipo youtube " +media.getUsers2());
String videoyoutube = media.getUsers2();
String videoId = getVideoId(videoyoutube);
((HomeActivity) (mCtx)).getLifecycle().addObserver(holder.youTubePlayerView);
holder.youTubePlayerView.addYouTubePlayerListener(new AbstractYouTubePlayerListener() {
@Override
public void onReady(@NonNull YouTubePlayer youTubePlayer) {
String videoyoutube = media.getUsers2();
String videoId = getVideoId(videoyoutube);
youTubePlayer.loadVideo(videoId, 0);
youTubePlayer.pause();
}
});
}
Если вам нужен код или макет для основного обзора переработчика, я могу включить их без проблем.
РЕДАКТИРОВАТЬ
Снимок экрана из первого пункта основного обзора переработчика. Содержащий обзор переработчика - это то место, где вы можете найти изображение велосипеда.
Второй снимок экрана после полной прокрутки вниз и вверх от основного обзора переработчика.
Вы можете видеть, что после каждой прокрутки вниз или вверх элемент уменьшается по высоте.
Основной макет RecyclerView:
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/cardview1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:background="@color/colorWhite"
android:padding="10dp"
card_view:cardCornerRadius="6dp"
card_view:cardElevation="16dp">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/profile_image"
android:layout_width="65dp"
android:layout_height="65dp"
android:layout_marginLeft="5dp"
android:layout_marginTop="5dp"
android:src="@drawable/ic_account_circle_black_24dp"
card_view:civ_border_color="#FF000000"
card_view:civ_border_width="2dp" />
<TextView
android:id="@+id/txtUsername"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_marginTop="3dp"
android:layout_marginBottom="3dp"
android:layout_toRightOf="@id/profile_image"
android:text="Sample"
android:textColor="@color/grey_700"
android:textSize="20dp"
android:textStyle="bold" />
<TextView
android:id="@+id/txtDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/txtUsername"
android:layout_alignStart="@id/txtUsername"
android:layout_alignTop="@id/layout_deporte2"
android:layout_marginLeft="5dp"
android:text="TextView"
android:textSize="10sp" />
<LinearLayout
android:id="@+id/layout_deportes1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginTop="3dp"
android:layout_toLeftOf="@id/tres"
android:orientation="horizontal">
<ImageView
android:id="@+id/sp1"
android:layout_width="25dp"
android:layout_height="25dp"
android:layout_marginRight="5dp"
android:layout_weight="1"
android:background="@drawable/circle"
android:visibility="visible"
card_view:srcCompat="@drawable/skate" />
<ImageView
android:id="@+id/sp2"
android:layout_width="25dp"
android:layout_height="25dp"
android:layout_marginRight="5dp"
android:layout_weight="1"
android:background="@drawable/circle"
android:visibility="visible"
card_view:srcCompat="@drawable/skate" />
<ImageView
android:id="@+id/sp3"
android:layout_width="25dp"
android:layout_height="25dp"
android:layout_marginRight="5dp"
android:layout_weight="1"
android:background="@drawable/circle"
android:visibility="visible"
card_view:srcCompat="@drawable/skate" />
<ImageView
android:id="@+id/sp4"
android:layout_width="25dp"
android:layout_height="25dp"
android:layout_marginRight="5dp"
android:layout_weight="1"
android:background="@drawable/circle"
android:visibility="visible"
card_view:srcCompat="@drawable/skate" />
</LinearLayout>
<LinearLayout
android:id="@+id/layout_deporte2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/layout_deportes1"
android:layout_marginLeft="20dp"
android:layout_marginTop="3dp"
android:layout_toLeftOf="@id/tres"
android:orientation="horizontal">
<ImageView
android:id="@+id/sp5"
android:layout_width="25dp"
android:layout_height="25dp"
android:layout_marginRight="5dp"
android:layout_weight="1"
android:background="@drawable/circle"
android:visibility="visible"
card_view:srcCompat="@drawable/skate" />
<ImageView
android:id="@+id/sp6"
android:layout_width="25dp"
android:layout_height="25dp"
android:layout_marginRight="5dp"
android:layout_weight="1"
android:background="@drawable/circle"
android:visibility="visible"
card_view:srcCompat="@drawable/skate" />
<ImageView
android:id="@+id/sp7"
android:layout_width="25dp"
android:layout_height="25dp"
android:layout_marginRight="5dp"
android:layout_weight="1"
android:background="@drawable/circle"
android:visibility="visible"
card_view:srcCompat="@drawable/skate" />
<ImageView
android:id="@+id/sp8"
android:layout_width="25dp"
android:layout_height="25dp"
android:layout_marginRight="5dp"
android:layout_weight="1"
android:background="@drawable/circle"
android:visibility="visible"
card_view:srcCompat="@drawable/skate" />
</LinearLayout>
<TextView
android:id="@+id/txtDescription"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/profile_image"
android:layout_marginStart="10dp"
android:layout_marginLeft="5dp"
android:layout_marginTop="10dp"
android:layout_marginEnd="10dp"
android:layout_marginRight="10dp"
android:layout_marginBottom="10dp"
android:minLines="1"
android:paddingRight="40dp"
android:text="Vivimos rodeados de objetos cotidianos que, a pesar de verlos cada día, todavía no tenemos muy claro para qué sirven. Es el caso del cuadrado con dos ranuras que tienen algunas mochilas, el bolsillo pequeño de los vaqueros, sus remaches de cobre e incluso las siglas 'YKK' que aparecen en tu cremallera. ¿Alguna vez te habías preguntado para qué sirven los agujeros laterales de algunas zapatillas? "
android:textAlignment="textStart"
android:textSize="14sp"
android:textStyle="bold" />
<ImageView
android:id="@+id/tres"
android:layout_width="25dp"
android:layout_height="25dp"
android:layout_alignParentEnd="true"
android:layout_marginTop="5dp"
card_view:srcCompat="@drawable/home_submenu" />
<ImageView
android:id="@+id/tresnocreador"
android:layout_width="25dp"
android:layout_height="25dp"
android:layout_alignParentEnd="true"
android:layout_marginTop="5dp"
card_view:srcCompat="@drawable/home_submenu" />
<ImageView
android:id="@+id/ivAmbassador"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_alignRight="@id/profile_image"
android:layout_alignBottom="@id/profile_image"
android:layout_marginLeft="50dp"
card_view:srcCompat="@drawable/home_ambassador" />
<ImageView
android:id="@+id/spot_sport"
android:layout_width="25dp"
android:layout_height="25dp"
android:layout_below="@id/txtDescription"
android:layout_marginLeft="5dp"
android:layout_marginTop="10dp"
card_view:srcCompat="@drawable/skate" />
<ImageView
android:id="@+id/tipo_spot"
android:layout_width="25dp"
android:layout_height="25dp"
android:layout_below="@id/txtDescription"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:layout_toEndOf="@id/spot_sport"
android:fadeScrollbars="true"
card_view:srcCompat="@drawable/negocio" />
<ImageView
android:id="@+id/spot_map"
android:layout_width="25dp"
android:layout_height="25dp"
android:layout_below="@id/txtDescription"
android:layout_alignBottom="@id/tipo_spot"
android:layout_marginLeft="9dp"
android:layout_marginTop="10dp"
android:layout_toRightOf="@id/tipo_spot"
android:fadeScrollbars="true"
android:foregroundGravity="bottom"
card_view:srcCompat="@drawable/home_pin_mapa" />
<TextView
android:id="@+id/spot"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/txtDescription"
android:layout_marginTop="15dp"
android:layout_toLeftOf="@id/verified"
android:layout_toRightOf="@id/spot_map"
android:ellipsize="end"
android:maxLines="1"
android:minLines="1"
android:text="Skatepark Macba, Barcelona, Spain"
android:textSize="12sp" />
<ImageView
android:id="@+id/verified"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_alignBottom="@id/spot_map"
android:layout_marginLeft="24dp"
android:layout_marginEnd="5dp"
android:layout_toLeftOf="@id/txtVerified"
card_view:srcCompat="@drawable/home_ambassador" />
<TextView
android:id="@+id/txtVerified"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/verified"
android:layout_alignParentEnd="true"
android:layout_marginLeft="25dp"
android:layout_marginTop="-18dp"
android:layout_marginEnd="25dp"
android:text="Verified"
android:textAlignment="textEnd"
android:textSize="12sp" />
<com.daimajia.slider.library.SliderLayout
android:id="@+id/slider"
android:layout_width="match_parent"
android:layout_height="280dp"
android:layout_below="@id/spot_sport"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:visibility="gone" >
</com.daimajia.slider.library.SliderLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerMarcas"
android:layout_width="match_parent"
android:layout_height="230dp"
android:layout_below="@id/spot_sport"
android:layout_marginTop="7dp" />
<ImageView
android:id="@+id/fire"
android:layout_width="35dp"
android:layout_height="35dp"
android:layout_below="@id/recyclerMarcas"
android:layout_marginStart="5dp"
android:layout_marginLeft="5dp"
android:layout_marginTop="5dp"
android:layout_marginEnd="5dp"
android:layout_marginBottom="5dp"
android:background="@drawable/circle"
android:src="@drawable/home_fire_desactivado"
/>
<TextView
android:id="@+id/txtFireOnOff"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/txtFire"
android:text="TextView"
android:visibility="invisible" />
<ImageView
android:id="@+id/comments"
android:layout_width="35dp"
android:layout_height="35dp"
android:layout_below="@id/recyclerMarcas"
android:layout_marginStart="5dp"
android:layout_marginTop="5dp"
android:layout_marginEnd="5dp"
android:layout_marginBottom="5dp"
android:layout_toRightOf="@id/txtFire"
android:background="@drawable/circle"
android:src="@drawable/home_comentarios"
/>
<ImageView
android:id="@+id/fixpin"
android:layout_width="35dp"
android:layout_height="35dp"
android:layout_below="@id/recyclerMarcas"
android:layout_marginStart="5dp"
android:layout_marginTop="5dp"
android:layout_marginEnd="5dp"
android:layout_marginBottom="5dp"
android:layout_toRightOf="@id/txtComments"
android:background="@drawable/circle"
android:src="@drawable/checknegrosincirculo"
/>
<TextView
android:id="@+id/txtEstadoAqui"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/recyclerMarcas"
android:layout_alignBottom="@id/fixpin"
android:layout_toRightOf="@id/fixpin"
android:gravity="center_vertical"
android:lines="3"
android:text="@string/have_you_been_here"
android:textSize="14sp" />
<TextView
android:id="@+id/txtFire"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/recyclerMarcas"
android:layout_alignBottom="@id/fixpin"
android:layout_toRightOf="@id/fire"
android:gravity="center_horizontal|center_vertical"
android:lines="2"
android:text="0"
android:textSize="14sp" />
<TextView
android:id="@+id/txtComments"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/recyclerMarcas"
android:layout_alignBottom="@id/fixpin"
android:layout_centerInParent="true"
android:layout_centerVertical="true"
android:layout_toRightOf="@id/comments"
android:gravity="center_vertical"
android:text="10 comments"
android:textAlignment="center"
android:textSize="14sp" />
<EditText
android:id="@+id/edtComentarios"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/fire"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:layout_marginEnd="10dp"
android:layout_marginBottom="10dp"
android:ems="10"
android:gravity="start|top"
android:hint="@string/insert_comments"
android:inputType="textMultiLine" />
<Button
android:id="@+id/btnEnviar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/edtComentarios"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="false"
android:layout_marginTop="10dp"
android:layout_marginEnd="40dp"
android:layout_marginBottom="10dp"
android:backgroundTint="@color/colorMovMap"
android:text="@string/send"
android:textColor="@android:color/white" />
<LinearLayout
android:id="@+id/linearGente"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/btnEnviar"
android:orientation="vertical">
<TextView
android:id="@+id/textView26"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/have_been_here"
android:layout_margin="10dp"
android:textStyle="bold" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvGente"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
<TextView
android:id="@+id/todosComentarios"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/linearGente"
android:duplicateParentState="false"
android:textSize="12sp" />
</RelativeLayout>
</androidx.cardview.widget.CardView>
Основной адаптер RV:
PostMediaAdapter adapter = new PostMediaAdapter(context, mediaList);
holder.recyclerView.setAdapter(adapter);
SnapHelper snapHelper = new LinearSnapHelper();
holder.recyclerView.setOnFlingListener(null);
snapHelper.attachToRecyclerView(holder.recyclerView);
holder.recyclerView.addItemDecoration(new CirclePagerIndicatorDecoration());