लॉलीपॉप पर CardViews के बीच कोई स्थान क्यों नहीं है?


79

मैं उपयोग करने की कोशिश करता हूं CardViewऔर यह 5.0 से नीचे काम करता है, लेकिन लॉलीपॉप पर अजीब लगता है।

यहाँ छवि विवरण दर्ज करें

यहाँ छवि विवरण दर्ज करें

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin">

<android.support.v7.widget.CardView android:layout_width="match_parent"
    android:layout_height="200dp">
    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="card1"
        android:textAppearance="?android:attr/textAppearanceLarge" />
</android.support.v7.widget.CardView>
<android.support.v7.widget.CardView android:layout_width="match_parent"
    android:layout_height="200dp">

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="card2"
        android:textAppearance="?android:attr/textAppearanceLarge" />
</android.support.v7.widget.CardView>
</LinearLayout>

जब मैं उपयोग करता RecyclerViewहूं तो मैं एक ही प्रश्न करता हूं, क्या मुझे लॉलीपॉप पर चलने पर कुछ जोड़ना होगा?


1
LinearLayoutकार्ड के बीच जोड़ें
एन्ड्रेस कर्डेनस

जवाबों:


205

इस पर सेट करें CardView:

app:cardUseCompatPadding="true"

प्रलेखन से:

एपीआई v21 + में पैडिंग जोड़ें और पिछले संस्करणों के साथ एक ही माप करें।


1
मैंने इसके बजाय "ऐप" नामस्थान का उपयोग किया। क्या "card_view" अभी भी उपयोग किया जाता है?
14

1
@wsgeorge जो कि एंड्रॉइड डॉक्यूमेंटेशन से था, लेकिन मैंने इसे अधिक फ्रेंडली ऐप नेमस्पेस में एड किया है।
टॉमहॉर्ब

बेहतर लग रहा है लेकिन कैसे विभक्त लाइन को हटा दें?
कोई समाचार

@nonews आप कोशिश कर सकते हैं android:divider="@null"
SREE


13

पहली छवि कार्ड दृश्य का अपेक्षित व्यवहार है। जब कार्ड में ऊँचाई होती है तो छाया नीचे की परतों पर गिरती है। प्री-लॉलीपॉप उपकरणों में पैडिंग को जोड़कर ऊंचाई बनाई जाती है। इसलिए पूर्व-लॉलीपॉप उपकरणों में कार्ड दृश्य के चारों ओर एक पैडिंग होगी।

L से पहले, CardView अपनी सामग्री में पैडिंग जोड़ता है और उस क्षेत्र में छाया खींचता है। यह गद्दी राशि अधिकतम कर्ल एलेवेशन + (1 - cos45) के बराबर है।


इसलिए हम संपादक में जो कार्डव्यू का आकार देखते हैं, वह वास्तविक आकार नहीं है जिसका उपयोग हम लॉलीपॉप के नीचे कर सकते हैं, इसका एक हिस्सा है जिसका उपयोग पैडिंग को जोड़ने के लिए किया जाता है, और लॉलीपॉप पर लेआउट में आकार वास्तविक जैसा होता है, यह ऐसा लगता है कि इसमें से एक गद्दी देना बेहतर लगता है should लेकिन मुझे उन्हें अलग करने के लिए कैसे करना चाहिए?
cajsaiko

संपादक में आपने जो देखा वह आपको वास्तविक रूप में मिलता है। सभी स्क्रीन में कार्ड के बीच एक समान मार्जिन होना चाहिए। अगर एपीआई लीवर 21 या अधिक है
अशक्त सूचक

5
यह उत्तर सही है। इसके अलावा, यदि आप यूआई को वैल्यू -21 के लिए अलग-अलग मार्जिन जोड़कर लगातार w / o बनाना चाहते हैं, तो आप कम्‍प्‍यूटर पैडिंग को सही पर सेट कर सकते हैं ताकि यह L में भी समान पैडिंग जोड़ सके। डेवलपर
.android.com

@ मार्जिन को जोड़ने के बाद कार्डव्यू लॉलीपॉप और प्री-लॉलीपॉप दोनों पर अच्छा लगता है, आपके उत्तर के लिए धन्यवाद!
cajsaiko

1
क्या प्री-लॉलीपॉप डिवाइसों पर पैडिंग को हटाना संभव है?
user2456977

5

आपको अपने से जोड़ना app:cardUseCompatPadding="true"है Cardview। लेकिन बस इसे जोड़ने से आपको त्रुटि हो सकती है। उस त्रुटि से बचने के लिए, आपको भी अपने को जोड़ना xmlns:app="http://schemas.android.com/apk/res-auto"होगाCardView

उदाहरण के लिए,

<android.support.v7.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    app:cardUseCompatPadding="true">

    // Other views here

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

कुछ जोड़ा जाएगा card_view:cardUseCompatPadding="true"और xmlns:card_view="http://schemas.android.com/apk/res-auto"इसके बजाय ऊपर उल्लेख किया है। दोनों तरीके सही हैं।

यदि आप XML (Android) में ऐप के बारे में अधिक जानना चाहते हैं , तो कृपया इस उत्तर को देखें :

यद्यपि पिछले उत्तर समस्या का समाधान करेंगे, उन्होंने यह नहीं बताया कि प्रत्येक विशेषता क्या करती है। अतः साधकों को उत्तर देने के लिए अधिक सहायक होना चाहिए,

cardPreventCornerOverlap विशेषता v20 पर और कार्ड सामग्री और गोल कोनों के बीच चौराहों को रोकने से पहले कार्ड व्यू में पैडिंग जोड़ता है।

cardUseCompatPadding विशेषता एपीआई v21 + में पैडिंग जोड़ती है और साथ ही पिछले संस्करणों के साथ समान माप है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.