android - কার্ডভিউ layout_width="match_parent" পিতামাতার RecyclerView প্রস্থের সাথে মেলে না




android-layout android-5.0-lollipop (7)

CardView থেকে অবিলম্বে পিতা হিসাবে RelativeLayout ব্যবহার করুন।

<RelativeLayout 
    android:layout_width="match_parent" ... >
    <CardView 
        android:layout_width="match_parent" ... >
    </CardView>
</RelativeLayout>

Layout_width = "match_parent" এর সাথে একটি পুনর্ব্যবহারযোগ্য ভিউ সহ আমার একটি টুকরা আছে:

<android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context=".MainActivity$PlaceholderFragment" />

RecyclerView এ আইটেমটি একটি কার্ডভিউও রয়েছে layout_width = "match_parent" সহ:

<android.support.v7.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:id="@+id/card_view"
    android:layout_gravity="center"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="20dp"
    card_view:cardCornerRadius="4dp">

    <TextView
        android:layout_gravity="center"
        android:id="@+id/info_text"
        android:layout_width="match_parent"
        android:gravity="center"
        android:layout_height="match_parent"
        android:textAppearance="?android:textAppearanceLarge"/>
</android.support.v7.widget.CardView>

আমি নীচের হিসাবে আইটেম ভিউ inflate:

public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
                                                   int viewType) {
        CardView v = (CardView) LayoutInflater.from(parent.getContext())
                .inflate(R.layout.card_listitem, null, true);

        ViewHolder vh = new ViewHolder(v);
        return vh;
    }

কিন্তু যখন আমি অ্যাপ্লিকেশনটি চালাচ্ছি, তখন কার্ডভিউ wrap_content হিসাবে রুপান্তরিত হয়েছে যা নীচে দেখানো হয়েছে:

এটি একটি বাস্তব ডিভাইস নয়, এমুলেটর চালানো হয়েছে যে নোট করুন।

আমি কি কিছু ভুল করছি, নাকি এটি একটি বাগ?


Card_view ব্যবহার করুন: কন্টেন্ট একটি নেতিবাচক মান সঙ্গে সংযুক্ত

<android.support.v7.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    card_view:contentPadding="-4dp"
    card_view:cardElevation="0dp"
    android:layout_height="wrap_content">

এটা আমার জন্য কাজ করে


একটি CardView মোড়ানো যা প্রস্থ আছে: match_parent


এটা আমার জন্য কাজ করে

View view = inflator.inflate(R.layout.layout_item, ***null***, false);


ডিফল্ট বাস্তবায়ন ডিফল্ট লেআউট ম্যানেজারে wrap_content ব্যবহারটি প্রয়োগ করে:

  @Override
public LayoutParams generateDefaultLayoutParams() {
    return new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
            ViewGroup.LayoutParams.WRAP_CONTENT);
}

আপনাকে যা করতে হবে তা এই লেআউটম্যানজারে এই পদ্ধতিটি এভাবে ওভাররাইড করতে হবে:

  @Override
public LayoutParams generateDefaultLayoutParams() {
    return new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
            ViewGroup.LayoutParams.WRAP_CONTENT);
}

শুধু নতুন লেআউট প্যারামিটার সেট করুন

view.setLayoutParams(new RecyclerView.LayoutParams(
    RecyclerView.LayoutParams.MATCH_PARENT,
    RecyclerView.LayoutParams.WRAP_CONTENT
));




android-cardview