कैसे एक पारदर्शी ImageButton है: Android


493
<ImageButton android:id="@+id/previous"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/media_skip_backward"
android:background="@drawable/transparent"></ImageButton>

यह वही है जो मैंने एक पारदर्शी इमेजबटन प्राप्त करने की कोशिश की ताकि उन बटन को एक सरफेस व्यू पर रखा जा सके। लेकिन एक्लिप्स, मुझे प्रोजेक्ट में एक त्रुटि देता है जैसे ही मैं xml में पारदर्शी लाइन को शामिल करता हूं।

कृपया मदद कीजिए।


3
बस एक साइड नोट: अपनी खुद की पारदर्शी छवि के बजाय, आप आम तौर पर सिर्फ @android का उपयोग कर सकते हैं: रंग / पारदर्शी - अपनी खुद की कस्टम पारदर्शी छवि के लिए कोई ज़रूरत नहीं
मथियास कॉनराड

6
कृपया ध्यान दें कि छवि बटन को पारदर्शी पृष्ठभूमि देकर, आप बटन पर क्लिक की गई (और शायद अक्षम) स्थिति के लिए एक दृश्य प्रतिक्रिया निकाल रहे हैं। यह प्रयोज्य की मामूली कमी का परिणाम है।
szeryf

यह सुनिश्चित करने के लिए कि ImageButton वास्तव में SurfaceView पर रखा गया है, यह पिछलेButton.bringToFront () को कॉल करने के लिए भी उपयोगी है, अन्यथा यह अभी भी सतहों के पीछे छिपा हो सकता है
Jay Snayder

एंड्रॉइड एपीआई बटन पर क्लिक किए गए या अन्य राज्यों के लिए दृश्य प्रतिक्रिया खोए बिना एक पारदर्शी पृष्ठभूमि बनाने के लिए सही विशेषता प्रदान करता है! नीचे मेरा जवाब पढ़ें!
lory105

जवाबों:


984

पृष्ठभूमि के लिए अशक्त का उपयोग करने का प्रयास करें ...

android:background="@null"

धन्यवाद। यह काम। केवल छवि देखी जाती है और उसके चारों ओर बॉक्स नहीं है। लेकिन क्या मैं इस बटन को SurfacaView पर यानी वीडियो पूर्वावलोकन पर रख सकता हूं? क्या यह संभव है? मैं यह कैसे करुं?
नम्रता

1
@ नम्रता SurfaceViewआपको अपने बटनों को एक सतह पर धकेलने की अनुमति देनी चाहिए, लेकिन ध्यान दें: "इसका उपयोग सतह के ऊपर बटन जैसे ओवरले लगाने के लिए किया जा सकता है, हालांकि ध्यान दें कि पूर्ण अल्फा-मिश्रित होने के बाद से इसका प्रदर्शन पर प्रभाव पड़ सकता है। हर बार सतह परिवर्तन के दौरान समग्र प्रदर्शन किया जाएगा। ” से developer.android.com/reference/android/view/SurfaceView.html
Quintin रॉबिन्सन

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

1
बटन पृष्ठभूमि को शून्य पर सेट करना अच्छा विचार नहीं है, जैसा कि ऊपर और नीचे बताया गया है। उपयुक्त विशेषताओं का उपयोग करने के साथ उत्तर बहुत बेहतर है, या क्लिक किए जाने पर गैर-क्लिक किए गए और उपयुक्त प्रतिक्रिया के लिए पारदर्शी के साथ सही चयनकर्ता बनाएं।
डेमियन वाल्कैक

इससे मुझे एक त्रुटि मिली .. लेकिन इसने मेरे लिए काम किया android: background = "@ android: color / पारदर्शी"
जुआन मेंडेज़

303

फिर एक पारदर्शी या पूरी तरह से उपयोग न करें क्योंकि तब बटन (या सामान्य दृश्य) क्लिक करने पर अधिक प्रकाश नहीं डालेगा !!!

मुझे भी यही समस्या थी और आखिरकार मुझे समस्या को हल करने के लिए एंड्रॉइड एपीआई से सही विशेषता मिली । यह किसी भी दृश्य पर लागू हो सकता है।

बटन विशिष्टताओं में इसका उपयोग करें:

android:background="?android:selectableItemBackground"

4
इसके लिए API 11 की आवश्यकता होती है - आप वाइल्ड में 24% फोन को खत्म कर देते हैं (जनवरी 2014 तक)
शॉन नील

8
ऐसा लगता है कि समर्थन पुस्तकालय का उपयोग करते हुए, एपीआई> = 11 आवश्यकता को दूर किया जा सकता है stackoverflow.com/questions/19714682/…
कहीं कोई

15
एक गोल तरंग प्रभाव के लिए, उपयोग करेंandroid:background="?android:selectableItemBackgroundBorderless"
मेटुस गोंडिम

7
सौभाग्य से 2019 तक, यह जंगली में लगभग 0% फोन को खत्म कर देता है।
user1032613 10

140

तुम भी एक पारदर्शी रंग का उपयोग कर सकते हैं:

android:background="@android:color/transparent"

9
@Geykel, @Adam, आपको ज्ञात होना चाहिए कि यह विशेषता काफी खतरनाक है जब बिना शर्त उपयोग किया जाता है क्योंकि यह एक और पारदर्शी परत जोड़ देगा जो स्क्रीन के लिए तैयार हो जाएगा और इसके परिणामस्वरूप अतिव्यापी पिक्सल हो सकता है और आपके एप्लिकेशन को धीमा कर सकता है। इसका परीक्षण करने के लिए, आप Developer option: Show GPU overdrawबैकग्राउंड सेट करने @nullऔर करने के बीच का अंतर देख सकते हैं @android:color/transparent
amirlazarovich

यह सबसे अच्छा और सबसे प्रभावी उत्तर है। :)
जुआन मेंडेज़

112

"@null"क्लिक करने पर बैकग्राउंड सेट करने से बटन पर कोई प्रभाव नहीं पड़ेगा। यह एक बेहतर विकल्प होगा।

style="?android:attr/borderlessButtonStyle"

बाद में मैंने पाया कि उपयोग करना

android:background="?android:attr/selectableItemBackground"

एक अच्छा उपाय भी है। और आप इस विशेषता को अपनी शैली में विरासत में दे सकते हैं।


मेरे लिए काम नहीं किया और दूसरे ने ऐप को क्रैश कर दिया। शायद मैं गलत किया, लेकिन मुझे नहीं पता कि क्या।
यानिस ड्रान


2
यह सही जवाब है। इसके अलावा AppCompact का उपयोग करते हुए, इस उत्तर के साथ तरंग प्रभाव पूरी तरह से काम करता है और एपी 19 पर सामान्य दबाया गया प्रभाव बॉक्स से बाहर काम करता है। Android: Background = "! android: attr / selectableItemBackground" शानदार!
रफाउउ

selectableItemBackgroundक्लिक करने पर बटन बदलने की स्थिति बनाने का एक अतिरिक्त लाभ इस समाधान का है। अन्य समाधान बटन को क्लिक करने योग्य नहीं बनाते हैं।
इगोरगानपोलस्की

14

रन टाइम में, आप निम्न कोड का उपयोग कर सकते हैं

btn.setBackgroundDrawable(null);

8
btn.setBackgroundColor (Color.TRANSPARENT); सभी एपीआई स्तरों पर काम करता है
अलबेबे

setBackgroundDrawable पदावनत उपयोग setbackGroundColor रूप AlBeebe से ऊपर का सुझाव दिया है
bhaskarc

इस विधि को अब हटा दिया गया है
रे किडी जूल

11

मेरा मानना ​​है कि स्वीकृत उत्तर होना चाहिए: android:background="?attr/selectableItemBackground"

यह @ lory105 के उत्तर के समान है लेकिन यह अधिकतम अनुकूलता के लिए समर्थन पुस्तकालय का उपयोग करता है ( android:समतुल्य केवल एपीआई> = 11 के लिए उपलब्ध है)


8

इस पंक्ति को निकालें:

android:background="@drawable/transparent">

और अपने गतिविधि वर्ग सेट में

ImageButton btn = (ImageButton)findViewById(R.id.previous);
btn.setAlpha(100);

आप अल्फा लेवल 0 से 255 सेट कर सकते हैं

ओ का मतलब पारदर्शी और 255 का मतलब अपारदर्शी है।


लेकिन क्या यह बटन को सरफेस व्यू के ऊपर लेटने में सक्षम करता है?
नम्रता

5
यह उत्तर गलत और भ्रामक है क्योंकि यह पूरे बटन को अर्ध-अपारदर्शी बनाता है। यदि कोड से ऐसा करने की इच्छा हो तो null को setBackground विधि से पास करें। setAlpha वह नहीं है जो आपको चाहिए।
क्विंटन विल्सन

यह पूरे दृश्य को पारदर्शी बनाता है।
राज

5

सबसे अच्छा तरीका पारदर्शी रंग कोड का उपयोग करना है

android:background="#00000000"

किसी भी चीज को पारदर्शी बनाने के लिए कलर कोड # 00000000 का उपयोग करें


4
@android:color/transparentहार्ड-कोडित मूल्यों के बिना।
फ्रेड

1
नहीं, संदर्भित मानों को प्राथमिकता दी जानी चाहिए ... लेकिन IMO, @Fred, यहां तक ​​कि @android:लेआउट में सीधे एक संदर्भ डालने को एक हार्डकोड मान माना जाता है क्योंकि यदि आप इसे बदलना चाहते हैं तो आपको इसे खोजने के लिए लेआउट में सर्फ करना होगा। मैं कुछ इस तरह की घोषणा करता हूं <item name="something">@android:color/transparent</item>और लेआउट में अपने स्वयं के मूल्य का उपयोग करता हूं, इसलिए मैं इसे आसानी से अपने संसाधनों में पा सकता हूं। एक्सएमएल फ़ाइल और इसे लेआउट में खोज किए बिना इसे बदल दें
क्लिफ बर्टन

2

उपयोग करें ImageView... इसमें डिफ़ॉल्ट रूप से पारदर्शी पृष्ठभूमि है ...


3
लेकिन यह एक बटन नहीं है
Moesio

2
आप एक ImageView का उपयोग एक बटन के रूप में कर सकते हैं। अपने जावा कोड में आप सिर्फ ImageView पिछले = (ImageView) findViewById (R.id.prepret) कहते हैं; और फिर पिछला .setOnClickListener (नया OnClickListener {सार्वजनिक शून्य onClick (/ * ऐसा तब होता है जब आप ImageView * /) को स्पर्श करते हैं); देखा!
मारीनेके

2

मैं पहले से ही पृष्ठभूमि में कुछ जोड़ रहा था, इसलिए इस चीज ने मेरे लिए काम किया:

   android:backgroundTint="@android:color/transparent"

(एंड्रॉइड स्टूडियो 3.4.1)

संपादित करें : केवल Android एपीआई स्तर 21 और इसके बाद के संस्करण पर काम करता है। अनुकूलता के लिए, इसके बजाय इसका उपयोग करें

   android:background="@android:color/transparent"

1

इसे इस्तेमाल करो:

<ImageButton
 android:id="@+id/back"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:background="@null"
 android:padding="10dp"
 android:src="@drawable/backbtn" />

1

XML में @null के रूप में ImageButton की पृष्ठभूमि सेट करें

<ImageButton android:id="@+id/previous"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/media_skip_backward"
android:background="@null"></ImageButton>

1

"@Null" का उपयोग करें । इसने मेरे लिए काम किया।

<ImageButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:srcCompat="@drawable/bkash"
    android:id="@+id/bid1"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:background="@null" />


0

यह प्रोग्रामेटिक रूप से बैकग्राउंड कलर को पारदर्शी बनाता है

 ImageButton btn=(ImageButton)findViewById(R.id.ImageButton01);
 btn.setBackgroundColor(Color.TRANSPARENT);

0

प्रोग्रामेटिक रूप से यह किया जा सकता है:

image_button.setAlpha(0f) // to make it full transparent
image_button.setAlpha(0.5f) // to make it half transparent
image_button.setAlpha(0.6f) // to make it (40%) transparent
image_button.setAlpha(1f) // to make it opaque

मैं नीच नहीं हूँ, लेकिन यह पूरी छवि को पारदर्शी बनाता है, न कि केवल पृष्ठभूमि को।
ट्रेवर

@ मुझे पता है, और यही ओपी अपने सवाल में पूछ रहा है, "एक पारदर्शी इमेजबटन"।
मुहम्मद रिफैट

1
आप बिल्कुल सही हैं, ओपी ने पारदर्शी बटन मांगा। लेकिन उनके उदाहरण से पता चलता है कि उनका मतलब पारदर्शी पृष्ठभूमि (जैसे android:background="@drawable/transparent") के साथ बटन माँगना था । किसी भी तरह से, मैं केवल डाउनवोट के संभावित कारण का सुझाव दे रहा हूं; मैं यह नहीं कह रहा कि यह उचित है।
ट्रेवर

1
@ अच्छी तरह से, हो सकता है कि इसका कारण था, किसी भी तरह से धन्यवाद।
मुहम्मद रिफैट

0

अपने XML सेट Backgroundविशेषता में किसी भी रंग White(#FFFFFF)शेड या शेड के लिए। Black(#000000)यदि आप चाहते हैं कि पारदर्शिता वास्तविक हैश कोड से ठीक पहले 80 रखी जाए।

#80000000   

-2
<ImageButton
    android:id="@+id/previous"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/media_skip_backward">
</ImageButton>

मैं एक पारदर्शी इस्तेमाल किया pngके लिए ImageButton, और ImageButtonकाम किया।


यह एक अच्छा समाधान नहीं है .. Android API द्वारा प्रदान की गई सही विशेषता का उपयोग करें! मेरी खबरें पढ़ें
lory105

यह एक और परत में परिणाम देगा, ओवरड्रॉ को जोड़ देगा।
tir38
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.