2012-04-02 12 views
7

के साथ आकार के रूप में एंड्रॉइड बटन की पृष्ठभूमि मैंने आकार से बटन पृष्ठभूमि बनाई है और मेरे उद्देश्य के लिए काफी अच्छा दिख रहा है। केवल एक चीज की आवश्यकता है इसके लिए थोड़ी सी छाया डालना।छाया बटन

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

    <item android:state_pressed="true"> 
     <shape> 
      <solid android:color="#343434" /> 

      <stroke android:width="1dp" android:color="#171717" /> 

      <corners android:radius="3dp" /> 

      <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" /> 
     </shape> 
    </item> 
    <item> 
     <shape> 
      <gradient android:angle="270" android:endColor="#E2E2E2" android:startColor="#BABABA" /> 

      <stroke android:width="1dp" android:color="#BABABA" /> 

      <corners android:radius="4dp" /> 

      <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" /> 
     </shape> 
    </item> 

</selector> 

यहाँ है कि मैं क्या मैं छाया ड्रॉप करते कैसे

enter image description here

हासिल करना चाहते है: यहाँ कोड है? मेरा अनुमान है कि मुझे एक और आकार बनाने की जरूरत है, लेकिन काले/भूरे रंग की पृष्ठभूमि के साथ और मार्जिन के बाएं पैडिंग को किसी छाया की तरह दिखने के लिए सेट करें। लेकिन मुझे नहीं पता कि यह कैसे करें ... और दस्तावेज़ीकरण ने मुझे बहुत मदद नहीं की।

बाद में संपादित करें: मैं xml फ़ाइल में छाया जोड़ना चाहता हूं, न कि कोड द्वारा। धन्यवाद।

+0

इस तरह मैं इसे करता हूं [http://stackoverflow.com/a/11579459/672773][1] [1]: http://stackoverflow.com/a/11579459/672773 आशा इस कर सकते हैं आपकी मदद के लिए धन्यवाद – Machete

उत्तर

11

आप एक दूसरे के ऊपर के बारे में अधिक आकार एक ढेर तो आप एक layer-list इस्तेमाल कर सकते हैं चाहते हैं।

<item> 
    <layer-list> 
     <item android:right="5dp" android:top="5dp"> 
      <shape> 
       <corners android:radius="3dp" /> 
       <solid android:color="#D6D6D6" /> 
      </shape> 
     </item> 
     <item android:bottom="2dp" android:left="2dp"> 
      <shape> 
       <gradient android:angle="270" android:endColor="#E2E2E2" android:startColor="#BABABA" /> 
       <stroke android:width="1dp" android:color="#BABABA" /> 
       <corners android:radius="4dp" /> 
       <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" /> 
      </shape> 
     </item> 
    </layer-list> 
</item> 

समस्या यह है कि आप के इस प्रकार के साथ अपने Button पर एक सच्चे छाया नज़र प्राप्त करने में सक्षम नहीं हो जाएगा: bellow अपने चयनकर्ता में सामान्य मद के लिए कोड (ग्रे रंग की एक पट्टी के साथ) drawable। आप दूसरे उत्तर या नौ पैच छवि से कोड का उपयोग कर सकते हैं जिस पर पहले से ही छाया है।

4
Paint mShadow = new Paint(); 
// radius=10, y-offset=2, color=black 
mShadow.setShadowLayer(10.0f, 0.0f, 2.0f, 0xFF000000); 
// in onDraw(Canvas) 
canvas.drawBitmap(bitmap, 0.0f, 0.0f, mShadow); 

इस कोड Android के रोमेन लड़का यहाँ उपलब्ध से है: http://www.devoxx.com/download/attachments/1705921/D8_C_10_09_04.pdf

+0

धन्यवाद, मैंने इसे नोट किया।इस मामले में मैं उल्लेख करना भूल गया था कि मैं xml फ़ाइल में सीधे छाया जोड़ना चाहता हूं। – Alin

+0

लिंक 404 है। बहुत बुरा –

5

इस प्रयास करें ...

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item> 
     <shape> 
      <solid android:color="#000000" /> 

      <corners android:radius="7dp" /> 
     </shape> 
    </item> 
    <item 
     android:bottom="5px" 
     android:left="5px"> 
     <shape> 
      <solid android:color="#FF0000" /> 

      <corners android:radius="7dp" /> 
     </shape> 
    </item> 
</layer-list> 
1

आप दृश्य के लिए एक चिकनी सीमा छाया पाने के लिए भी निम्नलिखित कोड की कोशिश कर सकते हैं:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 

<item> 
    <shape> 
     <solid android:color="#88000000" /> 

     <corners android:radius="15dp" /> 
    </shape> 
</item> 
<item 
    android:bottom="5px" 
    android:right="5px"> 
    <shape> 
     <solid android:color="#55B0CF" /> 

     <stroke 
      android:width="2dp" 
      android:color="#ffffff" /> 

     <corners android:radius="7dp" /> 
    </shape> 
</item> 

2

आप इस कोशिश कर सकते हैं:

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 
<!-- Bottom Shadow Darker Line--> 
<item> 
    <shape android:shape="rectangle" > 
     <solid android:color="@color/blue_darker" /> 
     <corners android:radius="9dip" /> 
    </shape> 
</item>  


<!-- Main Content Gradient --> 
<item android:bottom="1dip"> 
    <shape android:shape="rectangle" android:dither="false" > 
     <gradient 
      android:startColor="@color/blue_dark" 
      android:centerColor="@color/blue_medium" 
      android:endColor="@color/blue_light" 
      android:type="linear" 
      android:angle="90"/> 
     <corners android:radius="9dip" /> 
    </shape> 
</item> 

<!-- Upper Shadow Dark Line --> 
<item android:bottom="1dip" android:left="1dip" android:right="1dip"> 
    <shape android:shape="rectangle" > 
     <gradient 
      android:centerX="0.98" 
      android:centerY="0" 
      android:startColor="@android:color/transparent" 
      android:centerColor="@android:color/transparent" 
      android:endColor="@color/blue_medium" 
      android:type="linear" 
      android:angle="90"/>    
     <corners android:radius="9dip" /> 
    </shape> 
</item>  

1

इस मामले मैं lib https://github.com/dmytrodanylyk/shadow-layout

सबसे पहले का उपयोग में, आप Gradle में यह चालू करना चाहिए

dependencies { 
    compile 'com.github.dmytrodanylyk.shadow-layout:library:1.0.3' 
} 

तो ShadowLayout में अपने बटन डाल

<com.dd.ShadowLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     app:sl_shadowRadius="3dp" 
     app:sl_shadowColor="@color/your_color"> 
     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" /> 
    </com.dd.ShadowLayout> 

यह मेरे लिए worsk बहुत अच्छा है)

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