5

मेरे पास यह एक बटन के साथ यह न्यूनतम एंड्रॉइड स्टूडियो प्रोजेक्ट है। मैं के साथ बटन एक छाया आवंटित:मैं 21 से कम एंड्रॉइड एपीआई में बटन ऊंचाई (छाया) का अनुकरण कैसे कर सकता हूं?

android:elevation="3dp" 
android:translationZ="3dp" 
android:stateListAnimator="@null" 

और मैं Android स्टूडियो डिजाइन टैब में छाया देखते हैं। लेकिन मैं यह भी केवल API स्तर 21 और उच्च में प्रयोग किया जाता है एक्सएमएल संपादक

गुण ... में यह चेतावनी मिलती

(वर्तमान मिनट 16 है) और वास्तव में, बटन छाया प्रदर्शित किया जाता है केवल API level 21 or higher के साथ अनुकरणकर्ताओं में, और यह API level lower than 21 के साथ अनुकरणकों में कोई छाया नहीं के साथ फ्लैट दिखाया गया है।

तो ठोस सवाल यह है कि, मैं API's lower than 21 में छाया प्रभाव का अनुकरण कैसे कर सकता हूं।

activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView 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" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 

    <LinearLayout 
     android:id="@+id/main_layout" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:weightSum="1"> 

     <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_margin="20dp" 
      android:layout_weight="2.24"> 

      <Button 
       android:id="@+id/my_button" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_centerHorizontal="true" 
       android:layout_marginLeft="20dp" 
       android:layout_marginBottom="20dp" 
       android:elevation="5dp" 
       android:translationZ="5dp" 
       android:stateListAnimator="@null" 
       android:background="@android:color/holo_green_light" 
       android:text="BUTTON"/> 

     </RelativeLayout> 
    </LinearLayout> 
</ScrollView> 

MainActivity.java

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 

} 

बटन दिखा छाया, API 22 में: enter image description here

एक ही बटन नहीं दिख रहा छाया,में: enter image description here

उत्तर

5

Pre-LolliPop डिवाइस के लिए आपको खींचने योग्य फ़ाइल का उपयोग करके छाया या ऊंचाई बनाना है। इस तरफ।

element_background.xml

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 

<item> 
    <shape android:shape="rectangle"> 
     <solid android:color="#BDBDBD"/> 
     <corners android:radius="5dp"/> 
    </shape> 
</item> 

<item 
    android:left="0dp" 
    android:right="0dp" 
    android:top="0dp" 
    android:bottom="2dp"> 
    <shape android:shape="rectangle"> 
     <solid android:color="#ffffff"/> 
     <corners android:radius="5dp"/> 
    </shape> 
</item> 
</layer-list> 

तो तत्व है जो आप चाहते हैं के लिए निम्न कोड जोड़ने की तरह अपने फ़ोल्डर में drawable फ़ाइल बनाएँ।

android:background="@drawable/element_background" 
+0

@ रैमरो क्या आपको यह मिला या नहीं ??? – Ironman

+1

हां @ इरॉनमैन, यह काम करता है। लेकिन इसके लिए बटन दबाए गए, फोकस किए गए आदि से निपटने के लिए बहुत सारे काम की आवश्यकता है। इसलिए मैं बटन उपस्थिति छोड़ रहा हूं क्योंकि इसका उद्देश्य प्रत्येक एपीआई में Google द्वारा किया जाना था। धन्यवाद! – Ramiro

5

यदि आप चाहें, तो आप कार्बन को आजमा सकते हैं। यह लाइब्रेरी बैकपोर्टिंग सामग्री सुविधाओं 2.2 पर वापस है। यह ऊंचाई और जेनरेटेड, एनिमेटेड छाया का भी समर्थन करता है।

https://github.com/ZieIony/Carbon

संबंधित मुद्दे