1

enter image description herel'intérieur d'un DialogFragment la largeur de l'article RecyclerView psy avant le défilement

Je joins 3 captures d'écran d'un DialogFragment. Dans cette boîte de dialogue, je veux afficher un RecyclerView. Lorsque la boîte de dialogue s'ouvre, la largeur des 2 premiers éléments est réduite. Mais après un peu de défilement lorsque le 3ème élément s'affiche, il est affiché avec la largeur attendue [Vérifier la capture d'écran 1 & 2]. Si je continue à défiler de haut en bas, je vois le reste des éléments affichés normalement. Puis de nouveau je défile de bas en haut et étonnamment remarqué que les 1er et 2ème articles sont également affichés comme prévu.
[vérifier la capture d'écran no. 3]

Je voudrais partager mes codes.

De ma classe Adaptateur:

@Override 
public CustomViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item, parent, false); 
    return new CustomViewHolder(view); 
} 

item.xml:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    xmlns:tools="http://schemas.android.com/tools" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:paddingTop="8dp" 
    android:paddingStart="16dp" 
    android:paddingEnd="16dp"> 

    <TextView 
     android:id="@+id/modalityTextView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     app:layout_constraintTop_toTopOf="parent" 
     app:layout_constraintLeft_toRightOf="@id/modalityTitle" 
     tools:text="X-Ray" 
     android:textSize="22sp" 
     android:layout_marginStart="8dp" 
     android:layout_marginTop="4dp"/> 

    <ImageView 
     android:id="@+id/statusImageView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     app:layout_constraintTop_toTopOf="@id/modalityTextView" 
     app:layout_constraintBottom_toBottomOf="@id/modalityTextView" 
     app:layout_constraintRight_toRightOf="parent" 
     android:src="@drawable/ic_remove_circle_outline_black_24dp"/> 

    <TextView 
     android:id="@+id/contrastTitle" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     app:layout_constraintTop_toBottomOf="@id/modalityTextView" 
     app:layout_constraintLeft_toLeftOf="parent" 
     android:text="@string/contrast" 
     android:textStyle="bold" 
     android:layout_marginTop="4dp"/> 

    <TextView 
     android:id="@+id/contrastTextView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     app:layout_constraintTop_toBottomOf="@id/modalityTextView" 
     app:layout_constraintLeft_toRightOf="@id/contrastTitle" 
     tools:text="Oral contrast" 
     android:layout_marginStart="8dp" 
     android:layout_marginTop="4dp"/> 


    <TextView 
     android:id="@+id/bodyPartTitle" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     app:layout_constraintTop_toBottomOf="@id/contrastTitle" 
     app:layout_constraintLeft_toLeftOf="parent" 
     android:text="@string/bodyPart" 
     android:textStyle="bold" 
     android:layout_marginTop="4dp"/> 

    <TextView 
     android:id="@+id/bodyPartTextView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     app:layout_constraintTop_toBottomOf="@id/contrastTextView" 
     app:layout_constraintLeft_toRightOf="@id/bodyPartTitle" 
     tools:text="Chest" 
     android:layout_marginStart="8dp" 
     android:layout_marginTop="4dp"/> 

    <TextView 
     android:id="@+id/procedureTitle" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     app:layout_constraintTop_toBottomOf="@id/bodyPartTitle" 
     app:layout_constraintLeft_toLeftOf="parent" 
     android:text="@string/procedureDescription" 
     android:textStyle="bold" 
     android:layout_marginTop="4dp"/> 

    <TextView 
     android:id="@+id/procedureDescriptionTextView" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     app:layout_constraintTop_toBottomOf="@id/bodyPartTitle" 
     app:layout_constraintLeft_toRightOf="@id/procedureTitle" 
     app:layout_constraintRight_toRightOf="parent" 
     android:text="This is a procedure description. It will be a long text" 
     android:layout_marginStart="8dp" 
     android:layout_marginTop="4dp"/> 

    <TextView 
     android:id="@+id/checkedInAtTitle" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     app:layout_constraintTop_toBottomOf="@id/procedureDescriptionTextView" 
     app:layout_constraintLeft_toLeftOf="parent" 
     android:text="@string/checked_in_at" 
     android:textStyle="bold" 
     android:layout_marginTop="4dp"/> 

    <TextView 
     android:id="@+id/checkedInAtTextView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     app:layout_constraintTop_toBottomOf="@id/procedureDescriptionTextView" 
     app:layout_constraintLeft_toRightOf="@id/checkedInAtTitle" 
     tools:text="5:00 PM" 
     android:layout_marginStart="8dp" 
     android:layout_marginTop="4dp"/> 

    <View 
     android:layout_width="0dp" 
     android:layout_height="2dp" 
     android:background="@color/grey" 
     app:layout_constraintTop_toBottomOf="@id/checkedInAtTextView" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     android:layout_marginTop="8dp"/> 

</android.support.constraint.ConstraintLayout> 

DialogFragment xml:

<?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" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="400dp" 
    tools:context="com.alemhealth.ticketcapture.Features.CheckInListShow.StudyListDialog.CheckInDialogFragment"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="0dp" 
     android:layout_height="?attr/actionBarSize" 
     android:background="@color/colorPrimary" 
     app:layout_constraintTop_toTopOf="parent" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent"> 

     <TextView 
      android:id="@+id/toolbarTextView" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/check_in_information" 
      android:textColor="@color/white" 
      android:textSize="18sp" /> 

    </android.support.v7.widget.Toolbar> 

    <android.support.v7.widget.RecyclerView 
     android:id="@+id/studyListRecyclerView" 
     android:layout_width="0dp" 
     android:layout_height="250dp" 
     app:layout_constraintTop_toBottomOf="@id/toolbar" 
     app:layout_constraintBottom_toTopOf="@+id/closeButton" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     android:layout_marginBottom="16dp"> 

    </android.support.v7.widget.RecyclerView> 

    <Button 
     android:id="@+id/closeButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintTop_toBottomOf="@id/studyListRecyclerView" 
     app:layout_constraintBottom_toBottomOf="parent" 
     android:background="@drawable/custom_button" 
     android:textColor="@color/buttonTextColor" 
     android:text="@string/close" 
     android:layout_marginBottom="8dp"/> 


</android.support.constraint.ConstraintLayout> 

thème personnalisé pour DialogFragment:

<style name="DialogStyle" parent="Base.Theme.AppCompat.Dialog"> 
    <item name="android:windowMinWidthMajor">57%</item> 
    <item name="android:windowMinWidthMinor">57%</item> 
    <item name="android:textColor">@color/text_color</item> 
</style> 

onCreateView de DialogFragment:

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.fragment_check_in_dialog, container, false); 

     StudyListForDialog studyListForDialog = (StudyListForDialog) getArguments().getSerializable("data"); 

     if(studyListForDialog!=null){ 
      toolbarTextView.setText(studyListForDialog.getPatientName() + " - " + studyListForDialog.getPatientAge() + " - " + studyListForDialog.getPatientGender()); 

      studyListRecyclerViewAdapter = new StudyListRecyclerViewAdapter(studyListForDialog, getActivity(), this); 
      recyclerView.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false)); 
      recyclerView.setAdapter(studyListRecyclerViewAdapter); 
     }  

     return view; 
    } 

et de cette façon j'ouvrir mon DialogFragment:

Bundle bundle = new Bundle(); 
bundle.putSerializable("data", data); 

FragmentManager fragmentManager = ((Activity)view.getContext()).getFragmentManager(); 

CheckInDialogFragment checkInDialogFragment = new CheckInDialogFragment(); 
checkInDialogFragment.setStyle(DialogFragment.STYLE_NORMAL, R.style.DialogStyle); 
checkInDialogFragment.setArguments(bundle); 
checkInDialogFragment.show(fragmentManager, "check-in"); 

S'il vous plaît me aider à résoudre ce problème étrange.

Répondre

2

Peut-être que c'est un bug de ConstaintLayout.

J'ai mis à jour ma racine DialogFragment XML avec LinearLayout au lieu de ConstraintLayout. Et il a résolu le rétrécissant problème.

Mon xml DialogFragment est mis à jour:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:background="@color/colorPrimary"> 

     <TextView 
      android:id="@+id/toolbarTextView" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/check_in_information" 
      android:textColor="@color/white" 
      android:textSize="18sp" /> 

    </android.support.v7.widget.Toolbar> 

    <android.support.v7.widget.RecyclerView 
     android:id="@+id/studyListRecyclerView" 
     android:layout_width="match_parent" 
     android:layout_height="250dp" 
     app:layout_constraintTop_toBottomOf="@id/toolbar" 
     app:layout_constraintBottom_toTopOf="@+id/closeButton" 
     android:layout_marginBottom="16dp"> 

    </android.support.v7.widget.RecyclerView> 

    <Button 
     android:id="@+id/closeButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@drawable/custom_button" 
     android:textColor="@color/buttonTextColor" 
     android:text="@string/close" 
     android:layout_marginBottom="8dp" 
     android:layout_gravity="center"/> 

</LinearLayout>