जैसा कि आप छवि में देख सकते हैं, मैं एक के पीछे छाया चाहता हूं Button
। मैंने Button
गोल कोनों के साथ बनाया है । लेकिन समस्या यह है कि मैं इसके पीछे एक छाया उत्पन्न नहीं कर सकता Button
। इसे कैसे प्राप्त किया जा सकता है?
जैसा कि आप छवि में देख सकते हैं, मैं एक के पीछे छाया चाहता हूं Button
। मैंने Button
गोल कोनों के साथ बनाया है । लेकिन समस्या यह है कि मैं इसके पीछे एक छाया उत्पन्न नहीं कर सकता Button
। इसे कैसे प्राप्त किया जा सकता है?
जवाबों:
अपने इच्छित रूप को प्राप्त करने के लिए इस दृष्टिकोण का उपयोग करें।
button_selector.xml:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<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>
</selector>
और अपने xml लेआउट में:
<Button
android:background="@drawable/button_selector"
...
..
/>
item
यह कहते android:drawable
है की आवश्यकता ।
<selector>
और <item>
जरूरत नहीं है। छवि को वापस कर दिया गया है, जैसा कि @ user4702646 ने कहा।
Android संस्करण 5.0 और ऊपर के लिए
अन्य विचारों के लिए उन्नयन का प्रयास करें ..
android:elevation="10dp"
बटन के लिए,
android:stateListAnimator="@anim/button_state_list_animator"
button_state_list_animator.xml - https://android.googlesource.com/platform/frameworks/base/+/master/core/res/res/res/anim/button_state_list_anim_material=xml
5.0 संस्करण से नीचे,
सभी विचारों के लिए,
android:background="@android:drawable/dialog_holo_light_frame"
मेरा आउटपुट:
यहाँ फ़ोल्डर के cw_button_shadow.xml
अंदर छाया के साथ मेरा बटन हैdrawable
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="false">
<layer-list>
<!-- SHADOW -->
<item>
<shape>
<solid android:color="@color/red_400"/>
<!-- alttan gölge -->
<corners android:radius="19dp"/>
</shape>
</item>
<!-- BUTTON alttan gölge
android:right="5px" to make it round-->
<item
android:bottom="5px"
>
<shape>
<padding android:bottom="5dp"/>
<gradient
android:startColor="#1c4985"
android:endColor="#163969"
android:angle="270" />
<corners
android:radius="19dp"/>
<padding
android:left="10dp"
android:top="10dp"
android:right="5dp"
android:bottom="10dp"/>
</shape>
</item>
</layer-list>
</item>
<item android:state_pressed="true">
<layer-list>
<!-- SHADOW -->
<item>
<shape>
<solid android:color="#102746"/>
<corners android:radius="19dp"/>
</shape>
</item>
<!-- BUTTON -->
<item android:bottom="5px">
<shape>
<padding android:bottom="5dp"/>
<gradient
android:startColor="#1c4985"
android:endColor="#163969"
android:angle="270" />
<corners
android:radius="19dp"/>
<padding
android:left="10dp"
android:top="10dp"
android:right="5dp"
android:bottom="10dp"/>
</shape>
</item>
</layer-list>
</item>
</selector>
कैसे इस्तेमाल करे। बटन xml में, आप अपनी ऊंचाई और वजन का आकार बदल सकते हैं
<Button
android:text="+ add friends"
android:layout_width="120dp"
android:layout_height="40dp"
android:background="@drawable/cw_button_shadow" />
यदि आप पूर्व-लॉलीपॉप उपकरणों को लक्षित कर रहे हैं, तो आप शैडो-लेआउट का उपयोग कर सकते हैं , क्योंकि यह आसान है और आप इसे विभिन्न प्रकार के लेआउट में उपयोग कर सकते हैं।
अपनी ग्रेड फ़ाइल में छाया-लेआउट जोड़ें :
dependencies {
compile 'com.github.dmytrodanylyk.shadow-layout:library:1.0.1'
}
शीर्ष पर xml लेआउट है जहाँ आपके पास अपना बटन है, शीर्ष पर जोड़ें :
xmlns:app="http://schemas.android.com/apk/res-auto"
यह कस्टम विशेषताएँ उपलब्ध कराएगा।
तब आप अपने चारों ओर एक छाया लेआउट डालते हैं बटन :
<com.dd.ShadowLayout
android:layout_marginTop="16dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:sl_shadowRadius="4dp"
app:sl_shadowColor="#AA000000"
app:sl_dx="0dp"
app:sl_dy="0dp"
app:sl_cornerRadius="56dp">
<YourButton
.... />
</com.dd.ShadowLayout>
फिर आप app:
अपनी आवश्यक छाया से मिलान करने के लिए सेटिंग्स को ट्विक कर सकते हैं ।
आशा करता हूँ की ये काम करेगा।
मैंने ऊपर से कोड की कोशिश की है और अपनी खुद की छाया बनाई है जो मैं हासिल करने की कोशिश कर रहा हूं, उससे थोड़ा कम है। शायद इससे दूसरों को भी मदद मिलेगी।
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<layer-list>
<item android:left="5dp" android:top="5dp">
<shape>
<corners android:radius="3dp" />
<gradient
android:angle="315"
android:endColor="@android:color/transparent"
android:startColor="@android:color/black"
android:type="radial"
android:centerX="0.55"
android:centerY="0"
android:gradientRadius="300"/>
<padding android:bottom="1dp" android:left="0dp" android:right="3dp" android:top="0dp" />
</shape>
</item>
<item android:bottom="2dp" android:left="3dp">
<shape>
<corners android:radius="1dp" />
<solid android:color="@color/colorPrimary" />
</shape>
</item>
</layer-list>
</item>
</selector>
अगर यह आपके लिए काम करता है तो इसे आज़माएं
android:background="@drawable/drop_shadow"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="3dp"
android:paddingTop="3dp"
android:paddingRight="4dp"
android:paddingBottom="5dp"
बहुत शोध के बाद मुझे एक आसान तरीका मिला।
एक 9 पैच छवि बनाएं और इसे बटन या किसी अन्य दृश्य की पृष्ठभूमि के रूप में लागू करें।
आप इस वेबसाइट का उपयोग करके छाया के साथ एक 9 पैच छवि बना सकते हैं ।
अपनी खींचने योग्य निर्देशिका में 9 पैच छवि रखो और इसे बटन के लिए पृष्ठभूमि के रूप में लागू करें।
mButton.setBackground(ContextCompat.getDrawable(mContext, R.drawable.your_9_patch_image);
आप यह कोशिश कर सकते हैं:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<layer-list>
<item android:left="1dp" android:top="3dp">
<shape>
<solid android:color="#a5040d" />
<corners android:radius="3dip"/>
</shape>
</item>
</layer-list>
</item>
<item>
<layer-list>
<item android:left="0dp" android:top="0dp">
<shape>
<solid android:color="#99080d" />
<corners android:radius="3dip"/>
</shape>
</item>
<item android:bottom="3dp" android:right="2dp">
<shape>
<solid android:color="#a5040d" />
<corners android:radius="3dip"/>
</shape>
</item>
</layer-list>
</item>
आप इस महान पुस्तकालय https://github.com/BluRe-CN/ComplexView का उपयोग कर सकते हैं और इसका उपयोग करना वास्तव में आसान है