Recyclerview внутри другого переработчика view меняет высоту элемента после прокрутки вверх или вниз - PullRequest
0 голосов
/ 08 апреля 2020

Я работаю с представлением переработчика, которое содержит другое представление переработчика. Моя проблема заключается в том, что высота содержимого рециркулятора изменяется после прокрутки вниз или вверх основного окна рециркуляции. Каждый элемент уменьшает свою высоту после прокрутки вниз или вверх по главному представлению переработчика.

Это макет просмотра, содержащий переработчика:

<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();

                }
            });




        }

Если вам нужен код или макет для основного обзора переработчика, я могу включить их без проблем.

РЕДАКТИРОВАТЬ

Снимок экрана из первого пункта основного обзора переработчика. Содержащий обзор переработчика - это то место, где вы можете найти изображение велосипеда.

enter image description here

Второй снимок экрана после полной прокрутки вниз и вверх от основного обзора переработчика.

enter image description here

Вы можете видеть, что после каждой прокрутки вниз или вверх элемент уменьшается по высоте.

Основной макет 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());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...