Android
CardView
खोज…
परिचय
एक गोल कोने की पृष्ठभूमि और छाया के साथ एक फ्रेम -आउट।
CardView छाया के लिए लॉलीपॉप पर उन्नयन की संपत्ति का उपयोग करता है और पुराने प्लेटफार्मों पर एक कस्टम इम्यूलेटेड छाया कार्यान्वयन पर वापस आता है।
लॉलीपॉप से पहले प्लेटफार्मों पर गोल कोने की कतरन की महंगी प्रकृति के कारण, कार्डव्यू अपने बच्चों को क्लिप नहीं करता है जो गोल कोनों के साथ प्रतिच्छेद करते हैं। इसके बजाय, यह इस तरह के चौराहे से बचने के लिए पैडिंग जोड़ता है (इस व्यवहार को बदलने के लिए setPreventCornerOverlap (बूलियन) देखें)।
पैरामीटर
पैरामीटर | विवरण |
---|---|
cardBackgroundColor | CardView के लिए पृष्ठभूमि का रंग। |
cardCornerRadius | CardView के लिए कॉर्नर त्रिज्या। |
cardElevation | CardView के लिए ऊंचाई। |
cardMaxElevation | CardView के लिए अधिकतम ऊंचाई। |
cardPreventCornerOverlap | कार्ड सामग्री और गोल कोनों के बीच चौराहों को रोकने के लिए v20 पर और पहले कार्ड व्यू में पैडिंग जोड़ें। |
cardUseCompatPadding | एपीआई v21 + में पैडिंग जोड़ें और साथ ही पिछले संस्करणों के साथ माप करें। एक बूलियन मान हो सकता है, जैसे "सच" या "गलत"। |
contentPadding | कार्ड के किनारों और कार्ड व्यू के बच्चों के बीच इनर पैडिंग। |
contentPaddingBottom | कार्ड के निचले किनारे और कार्ड व्यू के बच्चों के बीच इनर पैडिंग। |
contentPaddingLeft | कार्ड के बाएं किनारे और कार्ड व्यू के बच्चों के बीच इनर पैडिंग। |
contentPaddingRight | CardView के लिए ऊंचाई। |
cardElevation | कार्ड के दाएं किनारे और कार्ड व्यू के बच्चों के बीच इनर पैडिंग। |
contentPaddingTop | कार्ड के शीर्ष किनारे और कार्ड व्यू के बच्चों के बीच इनर पैडिंग। |
टिप्पणियों
CardView
लॉलीपॉप (एपीआई 21) और इसके बाद के संस्करण पर वास्तविक ऊंचाई और गतिशील छाया का उपयोग करता है। हालाँकि, इससे पहले कि लॉलीपॉप CardView
एक प्रोग्रामेटिक शैडो कार्यान्वयन पर वापस आ जाए।
यदि एक CardView
के गोल कोनों के भीतर एक ImageView
फिट करने की कोशिश कर रहा है, तो आप यह देख सकते हैं कि यह सही पूर्व-लॉलीपॉप (API 21) नहीं दिखता है। इसे ठीक करने के लिए आपको अपने CardView
पर setPreventCornerOverlap(false)
को कॉल करना चाहिए, या अपने लेआउट में app:cardPreventCornerOverlap="false"
जोड़ें app:cardPreventCornerOverlap="false"
।
CardView
का उपयोग करने से पहले आपको build.gradle
फ़ाइल में समर्थन लाइब्रेरी निर्भरता को जोड़ना होगा:
dependencies{
compile 'com.android.support:cardview-v7:25.2.0'
}
नवीनतम संस्करण का एक नंबर यहां पाया जा सकता है
आधिकारिक दस्तावेज:
https://developer.android.com/reference/android/support/v7/widget/CardView.html https://developer.android.com/training/material/lists-cards.html
CardView के साथ शुरू हो रही है
CardView
Android समर्थन लाइब्रेरी का एक सदस्य है, और कार्ड के लिए एक लेआउट प्रदान करता है।
अपने प्रोजेक्ट में CardView
जोड़ने के लिए, अपनी build.gradle
निर्भरता के लिए निम्न पंक्ति जोड़ें।
compile 'com.android.support:cardview-v7:25.1.1'
नवीनतम संस्करण का एक नंबर यहां पाया जा सकता है
अपने लेआउट में फिर आप कार्ड प्राप्त करने के लिए निम्नलिखित जोड़ सकते हैं।
<android.support.v7.widget.CardView
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!-- one child layout containing other layouts or views -->
</android.support.v7.widget.CardView>
फिर आप इसके अंदर अन्य लेआउट जोड़ सकते हैं और उन्हें एक कार्ड में शामिल किया जाएगा।
इसके अलावा, CardView को किसी भी UI तत्व से पॉप्युलेट किया जा सकता है और कोड से जोड़-तोड़ किया जा सकता है।
<?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:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/card_view"
android:layout_margin="5dp"
card_view:cardBackgroundColor="#81C784"
card_view:cardCornerRadius="12dp"
card_view:cardElevation="3dp"
card_view:contentPadding="4dp" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="16dp" >
<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:id="@+id/item_image"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginRight="16dp"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/item_title"
android:layout_toRightOf="@+id/item_image"
android:layout_alignParentTop="true"
android:textSize="30sp"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/item_detail"
android:layout_toRightOf="@+id/item_image"
android:layout_below="@+id/item_title"
/>
</RelativeLayout>
</android.support.v7.widget.CardView>
कार्ड व्यू को कस्टमाइज़ करना
CardView एक डिफ़ॉल्ट ऊंचाई और कोने की त्रिज्या प्रदान करता है ताकि कार्डों में प्लेटफार्मों पर एक समान उपस्थिति हो।
आप इन डिफ़ॉल्ट मानों को xml फ़ाइल में इन विशेषताओं का उपयोग करके अनुकूलित कर सकते हैं:
-
card_view:cardElevation
विशेषता, CardView में उन्नयन को बढ़ाती है। -
card_view:cardBackgroundColor
विशेषता का उपयोग कार्डव्यू की पृष्ठभूमि के पृष्ठभूमि के रंग को अनुकूलित करने के लिए किया जाता है (आप कोई भी रंग दे सकते हैं)। -
card_view:cardCornerRadius
विशेषता का उपयोग कार्ड व्यू के 4 किनारों को वक्र करने के लिए किया जाता है -
card_view:contentPadding
विशेषता कार्ड और कार्ड के बच्चों के बीच पैडिंग जोड़ते हैं
नोट: card_view एक ऐसा नामस्थान है जिसे सबसे ऊपरी मूल लेआउट दृश्य में परिभाषित किया गया है। xmlns: card_view = " http://schemas.android.com/apk/res-auto "
यहाँ एक उदाहरण है:
<android.support.v7.widget.CardView
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
card_view:cardElevation="4dp"
card_view:cardBackgroundColor="@android:color/white"
card_view:cardCornerRadius="8dp"
card_view:contentPadding="16dp">
<!-- one child layout containing other layouts or views -->
</android.support.v7.widget.CardView>
आप इसे प्रोग्रामेटिक रूप से उपयोग करके भी कर सकते हैं:
card.setCardBackgroundColor(....);
card.setCardElevation(...);
card.setRadius(....);
card.setContentPadding();
अतिरिक्त गुणों के लिए आधिकारिक javadoc की जाँच करें।
लहर एनीमेशन जोड़ना
एक CardView में लहर एनीमेशन को सक्षम करने के लिए, निम्नलिखित विशेषताएं जोड़ें:
<android.support.v7.widget.CardView
...
android:clickable="true"
android:foreground="?android:attr/selectableItemBackground">
...
</android.support.v7.widget.CardView>
कार्डव्यू में पृष्ठभूमि के रूप में छवियों का उपयोग करना (प्री-लॉलीपॉप डिवाइस समस्याएं)
कार्डव्यू में पृष्ठभूमि के रूप में छवि / रंग का उपयोग करते समय, आप किनारों पर थोड़े सफेद पैडिंग (यदि डिफ़ॉल्ट कार्ड का रंग सफेद है) के साथ समाप्त हो सकते हैं। यह कार्ड दृश्य में डिफ़ॉल्ट गोल कोनों के कारण होता है। यहां बताया गया है कि प्री-लॉलीपॉप डिवाइस में उन मार्जिन से कैसे बचा जाए।
हमें एक विशेषता card_view:cardPreventCornerOverlap="false"
का उपयोग करने की आवश्यकता है। 1)। XML में निम्न स्निपेट का उपयोग करें।
<android.support.v7.widget.CardView
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
card_view:cardPreventCornerOverlap="false"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/row_wallet_redeem_img"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
android:src="@drawable/bg_image" />
</android.support.v7.widget.CardView>
- जावा में इस तरह
cardView.setPreventCornerOverlap(false)
।
ऐसा करने से कार्ड के किनारों पर एक अवांछित गद्दी निकल जाती है। इस कार्यान्वयन से संबंधित कुछ दृश्य उदाहरण यहां दिए गए हैं।
एपीआई 21 में छवि पृष्ठभूमि के साथ 1 कार्ड (पूरी तरह से ठीक)
2 बिना विशेषता के एपीआई 19 में छवि पृष्ठभूमि के साथ कार्ड (छवि के चारों ओर पैडिंग देखें)
एपीआई कार्ड 19 में इमेज कार्ड के साथ 3 फिक्स्ड कार्ड विशेषता cardView.setPreventCornerOverlap(false)
(अब जारी किया गया मुद्दा) के साथ
इसके बारे में डॉक्यूमेंटेशन पर यहां भी पढ़ें
मूल SOF पोस्ट यहाँ
TransDDable के साथ चेतन कार्ड व्यू पृष्ठभूमि रंग
public void setCardColorTran(CardView card) {
ColorDrawable[] color = {new ColorDrawable(Color.BLUE), new ColorDrawable(Color.RED)};
TransitionDrawable trans = new TransitionDrawable(color);
if(Build.VERSION.SDK_INT > Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) {
card.setBackground(trans);
} else {
card.setBackgroundDrawable(trans);
}
trans.startTransition(5000);
}