2012-05-17 23 views
17

मैंने कस्टम व्यू लिखा जो एक सर्कल खींचता है। फिर मैंने इसे सापेक्ष लेआउट पर रखा। इसके अलावा मैंने वहां मानक बटन लगाया, ताकि वे ओवरलैप हो जाएं। और मुझे लगता है कि बटन पारदर्शी है। इसे कैसे पारदर्शी बनाने के लिए?बटन को पारदर्शी कैसे बनाएं?

enter image description here

उत्तर

6

मानक Holo थीम्ड बटन आंशिक रूप से पारदर्शी है thats कर सकते हैं। आप या तो बटन में उपयोग करने के लिए एक नया बटन 9.png छवि बना सकते हैं या ड्रॉइंग का उपयोग करके एक नया बटन बना सकते हैं। drawable फ़ोल्डर में एक्सएमएल के रूप में नीचे दिए गए कोड को बचाने

http://droidapp.co.uk/?p=309

+1

सबसे आसान तरीका क्या है? क्या मैं सिर्फ स्टाइल बटन नहीं पारदर्शी नहीं कर सकता? –

+0

दूसरा विकल्प काफी सीधे है। आप बस बटन की पृष्ठभूमि को एक ठोस रंग (यानी # 99 99 99) में बदल सकते हैं, लेकिन यह अच्छा नहीं लगेगा और बटन को एक दबाए गए राज्य को खराब उपयोगकर्ता अनुभव नहीं देगा। – Tony

3

आप अलग फ्रेम लेआउट में बटन लगाना इतना है कि आपके विचार अभ्यस्त बटन प्रभावित करते हैं और मेरा विचार

1

और बटन पृष्ठभूमि के रूप में इस एक्सएमएल देना

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <stroke android:width="0dp" android:color="#ffffff" /> 
    <solid android:color="#000000"/> 
    <corners android:radius="1px"/> 
    <padding android:left="5dp" android:top="3dp" android:right="5dp" android:bottom="3dp" /> 
</shape> 

पूर्व:

यहाँ कैसे उत्तरार्द्ध करने के लिए पर एक लिंक भी है

android:background="@drawable/<< your file name>>" 
31

पृष्ठभूमि प्राप्त करने के लिए @android:drawable/btn_default पर सेट करें होलो थीम की पारदर्शिता की आईडी

+3

यह ग्राफिक को डिवाइस डिफ़ॉल्ट में भी बदलता है (यानी होलो नहीं)। – Timmmm

+2

बिल्कुल सही जवाब। धन्यवाद। –

+0

यह सही जवाब है! क्या आप जानते हैं कि इसे किसी अन्य नियंत्रण में कैसे लागू किया जाए? (विशेष रूप से एडिटटेक्स्ट के लिए) – Bronek

0

होलो पारदर्शिता वास्तव में पीएनजी फ़ाइलों में बनाई गई है। तो इसे बदलने का एकमात्र असली तरीका पीएनजी को संपादित करना और उन्हें पारदर्शी बनाना है। यह वास्तव में बिल्कुल आसान नहीं है। आपको 255/102 तक छवि के अल्फा चैनल को गुणा करने की आवश्यकता है। जो आसान नहीं है!

लेकिन क्योंकि मैं इतनी प्रतिभाशाली हूं, मुझे ऐसा करने का एक तरीका मिला। असल में मैंने सभी प्रासंगिक पीएनजी और एक्सएमएल को अपनी निर्देशिका संरचना में कॉपी किया है (बटनों में केवल -mdpi, -hdpi और -xhdpi संस्करण हैं)। तब मैंने इसे चलाया:

FILE के लिए find . -name *.png में; mogrify- मूल्यांकन करें बहुगुणित 2.5-चैनल अल्फा $ फ़ाइल; किया

काम किया! असल में यह कुछ कारणों से अक्षम बटनों के लिए काफी काम नहीं करता - मुझे लगता है क्योंकि केंद्र अति पारदर्शी है, लेकिन मुझे उन लोगों के बारे में बहुत परवाह नहीं है। यदि आप उन्हें पूरी तरह से गैर पारदर्शी चाहते हैं तो आपको उन छवियों के लिए 2.5 से अधिक मूल्य का उपयोग करना होगा।

परिणाम here है।

+0

यह उत्कृष्ट है, लेकिन जब आप कहते हैं "तो मैंने यह भाग लिया ...", जहां क्या आप उस कोड को चलाते हैं? – Floris

1

मैं एक ही समस्या के साथ था लेकिन टॉगलबटन के साथ। एक बदसूरत लेकिन तेज़ समाधान बटन के पीछे एक छवि दृश्य को स्थिति में रखना था और बटन को फिट करने के लिए margin एस, background और alpha को बदलना था। उदाहरण के लिए, एक RelativeLayout अंदर:

<ImageView 
    android:layout_alignLeft="@+id/toggleButton" 
    android:layout_alignBottom="@+id/toggleButton" 
    android:layout_alignRight="@+id/toggleButton" 
    android:layout_alignTop="@+id/toggleButton" 
    style="@style/HackBackgroundToggleButton" /> 

<ToggleButton 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/toggleButton" 
    ... /> 

और, दिखाई हैक, निकाले शैली कम करने के प्रयास में:

<style name="HackBackgroundToggleButton"> 
    <item name="android:layout_width">84dp</item> 
    <item name="android:layout_height">42dp</item> 
    <item name="android:background">#FFFFFF</item> 
    <item name="android:layout_marginTop">4dp</item> 
    <item name="android:layout_marginLeft">4dp</item> 
    <item name="android:layout_marginRight">4dp</item> 
    <item name="android:layout_marginBottom">4dp</item> 
    <item name="android:alpha">0.75</item> 
</style> 
संबंधित मुद्दे