phone 和模拟器上的 RecyclerView 项目间距奇怪,但 Android Studio 预览中的间距正常

RecyclerView Item Weird Spacing on phone and Emulator but Normal on Android Studio Preview

我有一个在回收站视图中显示帖子的应用程序。回收商查看项目有一张图片、一个标题和一个带有主题标签的芯片组

我的问题是,当我在我的 phone 或模拟器上播放应用程序时,芯片组和文本之间出现奇怪的间距,但在预览中看起来不错

这可能是什么?

这是回收站的 xml 查看项目:

<?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"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:clipToPadding="false"
    android:gravity="center_horizontal|top"
    android:orientation="vertical"
    android:padding="10dp">

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="5dp"
        android:background="@color/white"
        android:clipToPadding="false"
        android:elevation="4dp"
        android:padding="2dp">

        <ImageView
            android:id="@+id/imageViewThumbnailRecyclerPost"
            android:layout_width="157dp"
            android:layout_height="100dp"
            android:backgroundTint="@color/dark_gray_eg"
            android:foregroundGravity="center"
            android:scaleType="centerCrop"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="1.0"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="1.0"
            app:srcCompat="@drawable/thumbnail_preview" />

        <ImageView
            android:id="@+id/imageViewTypeRecyclerPost"
            android:layout_width="15dp"
            android:layout_height="15dp"
            android:layout_margin="3dp"
            android:layout_marginTop="28dp"
            android:layout_marginEnd="4dp"
            android:elevation="3dp"
            android:foregroundGravity="center"
            android:scaleType="centerInside"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:srcCompat="@drawable/google_slides_icon" />

        <ImageView
            android:id="@+id/imageViewStatusRecyclerPost"
            android:layout_width="15dp"
            android:layout_height="15dp"
            android:layout_margin="3dp"
            android:foregroundGravity="center"
            android:scaleType="centerInside"
            android:visibility="gone"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/imageViewTypeRecyclerPost"
            app:srcCompat="@drawable/icon_edited" />
    </androidx.constraintlayout.widget.ConstraintLayout>

    <TextView
        android:id="@+id/textViewTitleRecyclerPost"
        android:layout_width="157dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="1dp"
        android:layout_marginTop="5dp"
        android:inputType="textMultiLine"
        android:lines="2"
        android:text="A Vinda da fampilia real e a independencia do Brasil"
        android:textColor="@color/dark_gray_eg"
        android:textSize="13sp"
        android:textStyle="bold" />

    <com.google.android.material.chip.ChipGroup
        android:id="@+id/chipGroupRecyclerPost"
        android:layout_width="157dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="-1dp"
        android:layout_marginTop="5dp"
        android:layout_marginEnd="-1dp"
        app:chipSpacingHorizontal="0dp"
        app:chipSpacingVertical="5dp"
        app:singleLine="false">
    </com.google.android.material.chip.ChipGroup>


</LinearLayout>

这是它在预览中的样子,在我的 phone 中应该是这样的:

这就是它在我的 phone 上的实际样子:

这是我初始化回收器的方式:

  GridLayoutManager layoutManager = new GridLayoutManager(getContext(), 2);

    adapterRecyclerSearch = new AdapterRecyclerSearch(getContext(), postsList);
    recyclerViewSearch.setLayoutManager(layoutManager);
    recyclerViewSearch.setHasFixedSize(true);
    recyclerViewSearch.setAdapter(adapterRecyclerSearch);

这是我的适配器:

public class AdapterRecyclerSearch extends RecyclerView.Adapter<AdapterRecyclerSearch.MyViewHolder> {

    // list of Posts
    public List<DatabasePostHolder> postsList = new ArrayList<>();
    public Context context;

    public StorageReference storage = FirebaseInstances.getStorageReference();
    public StorageReference storageThumbnails = storage.child(Constants.STORAGE_FOLDER_THUMBNAILS);

    public AdapterRecyclerSearch(Context context, List<DatabasePostHolder> postsList){
        // recieve context for glide and posts list to display
        this.context = context;
        this.postsList = postsList;
    }

    public void setPostsList(List<DatabasePostHolder> postsList) {
        this.postsList = postsList;
    }

    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

        View postView = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycler_post_layout, parent, false);

        return new MyViewHolder(postView);
    }

    @SuppressLint("ResourceAsColor")
    @Override
    public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {

     
        // set hashtag chips
        List<String> tagsList = postHolderInPosition.getTags();
        holder.chipGroupHashtags.removeAllViews();
        for (int i=0; i<tagsList.size(); i++){

            Chip chip = (Chip) LayoutInflater.from(context).inflate(R.layout.chip_hashtag_template, holder.chipGroupHashtags, false);
            chip.setText("#" + tagsList.get(i));

           holder.chipGroupHashtags.addView(chip);
        }


    }

    @Override
    public int getItemCount() {
        return postsList.size();
    }

    public class MyViewHolder extends RecyclerView.ViewHolder{

        // variables of what will be inside the layout for the adapter
        TextView textViewTitle;
        ImageView imageThumbnail, imageType, imageStatus;
        ChipGroup chipGroupHashtags;

        public MyViewHolder(@NonNull View itemView) {
            super(itemView);

            // define view components from post layouts
            textViewTitle = itemView.findViewById(R.id.textViewTitleRecyclerPost);

            imageThumbnail = itemView.findViewById(R.id.imageViewThumbnailRecyclerPost);
            imageType = itemView.findViewById(R.id.imageViewTypeRecyclerPost);
            imageStatus = itemView.findViewById(R.id.imageViewStatusRecyclerPost);

            chipGroupHashtags = itemView.findViewById(R.id.chipGroupRecyclerPost);


        }
    }

}

将这个添加到芯片组出现资源为我解决了这个问题

    <item name="chipMinTouchTargetSize">0dp</item>
    <item name="chipMinHeight">15dp</item>