Android 5.0 पर AppCompat CardView पर XML में एलिवेशन सेट करना


95

जो मैं समझता हूं, पूर्वावलोकन चरण के आरंभ CardViewमें जावा में हैक के बिना केवल एक्सएमएल में उत्थान स्थापित करने का कोई तरीका नहीं लग रहा था । अब जब आधिकारिक रिलीज़ आउट हो गया है, तो क्या एक्सएमएल कोड लिखने के बिना एक्सएमएल में ऐसा करने का कोई तरीका है?

मैंने card_view:cardElevationकोई असर नहीं करने की कोशिश की है। मैंने सोचा था कि जब मैं 5.0 के लिए एमुलेटर का उपयोग कर रहा था तो सब कुछ ठीक था। लेकिन अब जब मैं अपने वास्तविक डिवाइस पर आधिकारिक संस्करण का उपयोग कर रहा हूं तो मेरे सभी CardViewगायब हो गए हैं

प्री लॉलीपॉप, यह बहुत अच्छा काम करता है।

यहाँ मेरा पूरा xml है

<?xml version="1.0" encoding="utf-8"?>
<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:orientation="horizontal"
    android:layout_width="match_parent"
    android:id="@+id/cv1"
    card_view:cardElevation="4dp"
    android:layout_margin="6dp"
    card_view:cardCornerRadius="3dp"
    android:layout_height="match_parent">

मैंने समस्या के पीछे भाग लिया है लेकिन अभी तक कोई जवाब नहीं मिला है। जब मैंने लॉलीपॉप में अपग्रेड किया, तो किसी तरह मार्जिन या पैडिंग गायब हो गई, ताकि वे कार्ड के किनारों या किनारों को न देख सकें, इसलिए यह पूरी तरह से सपाट है।
TheLettuceMaster

जवाबों:


316

यह एक मार्जिन / पेडिंग समस्या की तरह दिखता है, कार्डयूसेकम्पेटडिंग विशेषता को सही पर सेट करने का प्रयास करें । उदाहरण के लिए:

<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"
    android:layout_height="match_parent"
    android:layout_margin="6dp"
    card_view:cardUseCompatPadding="true"
    card_view:cardElevation="4dp"
    card_view:cardCornerRadius="3dp">

Android डॉक से स्पष्टीकरण:

कार्ड व्यू एल से पहले प्लेटफार्मों पर छाया खींचने के लिए अतिरिक्त पैडिंग जोड़ता है।

इससे L के बीच L से पहले और L के बीच अलग-अलग आकार हो सकते हैं। यदि आपको अन्य दृश्यों के साथ CardView को संरेखित करने की आवश्यकता है, तो परिवर्तनों के लिए आपको api संस्करण विशिष्ट आयाम संसाधनों की आवश्यकता हो सकती है। एक विकल्प के रूप में, आप cardUseCompatPadding ध्वज को सही पर सेट कर सकते हैं और CardView प्लेटफ़ॉर्म L और उसके बाद समान पैडिंग मान जोड़ देगा।

CardUseCompatPadding ध्वज को सही सेट करने के बाद से UI में अनावश्यक अंतराल जोड़ता है, डिफ़ॉल्ट मान गलत है।


1
card_view: cardUseCompatPadding = "true" को काम करने के लिए ऊंचाई मिली, लेकिन पैडिंग का एक गुच्छा भी जोड़ा गया ....
टेलर

1
कार्ड एलिवेशन का डिफ़ॉल्ट मान क्या है?
एंड्रॉइड डेवलपर

13

यदि आपके पास यह रेखा है

android:hardwareAccelerated="false"

मैनिफ़ेस्ट एप्लिकेशन टैग में आपकी छाया प्रदर्शित नहीं की गई थी। इस लाइन को हटाने का प्रयास करें

या उपयोग करें

android:hardwareAccelerated="true"

यह मेरे लिए काम किया! मुझे आशा है कि यह आपके लिए भी काम करता है :)


हाँ! यही समस्या थी !! आपको बहुत - बहुत धन्यवाद! लेकिन बिटमैप छवि के कारण जो मैंने पृष्ठभूमि के लिए उपयोग किया है, ऐप धीमा हो जाता है :(
कौशल्या

13

आपको cardElevationविशेषता का उपयोग करना होगा ।
Androidx लाइब्रेरी:

आप MaterialCardआधिकारिक सामग्री घटक पुस्तकालय में शामिल का उपयोग कर सकते हैं :

implementation 'com.google.android.material:material:1.x.x'

और आपके लेआउट में:

    <com.google.android.material.card.MaterialCardView
        app:cardElevation="xxdp"
        app:cardUseCompatPadding="true"
        ..>

या CardViewandroidx संकुल में:

implementation 'androidx.cardview:cardview:1.x.x'

और आपके लेआउट में:

     <androidx.cardview.widget.CardView
        app:cardElevation="xxdp"
        app:cardUseCompatPadding="true"
        ..>

OLD समर्थन पुस्तकालय :

<android.support.v7.widget.CardView
    app:cardElevation="xxdp" 
    app:cardUseCompatPadding="true"
    ..>

1
नहीं, मैंने फिर से कोशिश की, और यह काम नहीं किया। मैंने अपना पूरा xml ऊपर जोड़ा।
TheLettuceMaster

मेरे लिये कार्य करता है। डिफ़ॉल्ट ऊंचाई क्या है?
SMBiggs

ऊंचाई कार्ड आराम ऊंचाई: 2dp कार्ड उठाया ऊंचाई: 8dp कार्ड 2dp की एक डिफ़ॉल्ट ऊंचाई है। डेस्कटॉप पर, कार्ड्स में 0dp की आराम ऊंचाई हो सकती है और होवर पर 8dp की ऊंचाई प्राप्त हो सकती है। से google.com/design/spec/components/...
ZimaXXX

यह पदावनत है
मकरंद

1
@ मकरंद ट्रू. डिज़ाइन लाइब्रेरी का रखरखाव अब नहीं होता है, लेकिन मैंने 5 साल पहले इस सवाल का जवाब दिया था। किसी भी स्थिति में मैंने andriodx विवरण के साथ उत्तर को अपडेट किया है।
गैब्रिएल मैरीओटी

1

इसने मुझे जोड़कर हल किया

xmlns: card_view = "http://schemas.android.com/apk/res-auto"

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

<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"
    android:layout_height="wrap_content"
    android:layout_marginTop="5dp"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    card_view:cardCornerRadius="5dp">

0

मैं एक ऐप जोड़ रहा हूँ: cardElevation = कार्ड दृश्य पर "8dp" विशेषता, इसलिए यह इस प्रकार होगा:

<android.support.v7.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="160dp"
        android:layout_marginStart="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginTop="24dp"
        android:layout_marginEnd="16dp"
        android:layout_marginRight="16dp"
        app:cardElevation="8dp"
        app:cardCornerRadius="8dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:scaleType="centerCrop"
            android:src="@drawable/kmp_warna1" />

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

आशा है कि यह मदद करेगा

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