2012-07-24 23 views
11

मेरे पास एक पृष्ठभूमि छवि वाला एक छवि बटन है जिसमें कुछ पारदर्शिता है। डिफ़ॉल्ट रूप से, बटन को भूरे रंग की पृष्ठभूमि मिलती है जहां पारदर्शिता पिक्सल होते हैं - होलो के कारण। लाइट थीम। मैंने setBackgroundColor(Color.TRANSPARENT) विधि के माध्यम से बटन के पृष्ठभूमि रंग को पारदर्शी करने की कोशिश की। यह ठीक काम करता है और जो कुछ मुझे चाहिए, उसे छोड़कर अब मेरे बटन में हल्का नीला रंग नहीं है जब ध्यान केंद्रित/दबाया जाता है और इसके बजाय फ्लैट दिखता है (इसके चारों ओर कोई सीमा नहीं है, तो यह एक छवि की तरह दिखता है)।एंड्रॉइड छवि बटन पृष्ठभूमि रंग

मैं googled और देखा कि आप चयनकर्ताओं प्रदान कर सकते हैं के रूप में समझाया here लेकिन इसका मतलब यह है कि मैं बटन राज्य प्रति एक छवि निर्दिष्ट करने के लिए है और मैं ऐसा नहीं करना चाहता है। मैं विषय से फोकस/दबाए गए रंगों का उत्तराधिकारी बनना चाहता हूं लेकिन भूरे रंग के बजाय पारदर्शी पर सामान्य बटन पृष्ठभूमि (जब दबाया/केंद्रित नहीं) ओवरराइट करना चाहता हूं। मैं उसे कैसे प्राप्त कर सकता हूं?? कृपया एक कामकाजी उदाहरण प्रदान करें क्योंकि मैंने सफलता के बिना कई अलग-अलग संयोजनों की कोशिश की है।

सहायता के लिए सभी को धन्यवाद। मैंने यह पता लगाया कि प्रत्येक बटन के लिए केंद्रित और दबाए गए राज्यों के साथ एक ही छवि को फिर से बनाने के बिना इस काम को कैसे बनाया जाए!

मेरे बटन के रूप में परिभाषित किया गया है:

<ImageButton 
      android:id="@+id/ImageButton05" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:background="@drawable/button" /> 

और मेरी पृष्ठभूमि एक्सएमएल फ़ाइल (शीर्षक button.xml) के रूप में परिभाषित किया गया है इस प्रकार है:

<?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:drawable="@drawable/btn_default_pressed_holo_light"></item> 
      <item android:drawable="@drawable/network_wifi"></item> 
     </layer-list> 
    </item> 
    <item android:state_focused="true"> 
     <layer-list> 
      <item android:drawable="@drawable/btn_default_focused_holo_light"></item> 
      <item android:drawable="@drawable/network_wifi"></item> 
     </layer-list> 
    </item> 
    <item android:state_hovered="true"> 
     <layer-list> 
      <item android:drawable="@drawable/btn_default_focused_holo_light"></item> 
      <item android:drawable="@drawable/network_wifi"></item> 
     </layer-list> 
    </item> 
    <item> 
     <layer-list> 
      <item android:drawable="@drawable/btn_default_normal_holo_light"></item> 
      <item android:drawable="@drawable/network_wifi"></item> 
     </layer-list> 
    </item> 
</selector> 

उत्तर

1

यहाँ मेरी समाधान है

मैं विषय से फोकस/दबाए गए रंगों का उत्तराधिकारी बनाना चाहता हूं लेकिन जीआर के बजाय पारदर्शी करने के लिए सामान्य बटन पृष्ठभूमि (जब दबाया/केंद्रित नहीं) ओवरराइट करना चाहता हूं ey। मैं उसे कैसे प्राप्त कर सकता हूं??

AFAIK आप ऐसा नहीं कर सकते क्योंकि फोकस/दबाए गए रंग उसी छवि संसाधनों में बनाए जाते हैं जिनमें भूरे रंग की पृष्ठभूमि होती है।

यदि आप सिस्टम फोकस/दबाए रखना चाहते हैं लेकिन पृष्ठभूमि को हटाएं तो आपको छवि संसाधनों की एक प्रतिलिपि लेनी होगी (जो आपके एसडीके में /sdkroot/platforms/[version]/data/res/drawable-hdpi पर [संस्करण] को प्रतिस्थापित कर सकता है, जो भी एपीआई स्तर है उसके बाद। और यदि ज़रूरत है तो एचडीपीआई को एक और घनत्व के साथ प्रतिस्थापित करें) और फोटो संपादक के साथ ग्रे बटन को संपादित करें। फिर एक चयनकर्ता बनाएं जो आपकी संशोधित छवियों का संदर्भ देता है और इसे अपने बटन के लिए पृष्ठभूमि के रूप में सेट करता है।

संपादित करें: यहाँ ध्यान केंद्रित करने के लिए डिफ़ॉल्ट होलो बटन छवियाँ हैं और दबाया

focused

pressed

+0

यह सेट छवियों में कोई ग्रे नहीं होता है .. वे पारदर्शी हैं क्योंकि मैंने – Ayyoudy

+0

को ध्यान केंद्रित किया है, दबाए गए ग्रे के बजाय दबाए गए काले रंग के नीले रंग के बॉक्स हैं। मेरा संपादन देखें। आपको चमकदार प्रकाश प्रभाव के पीछे छोड़ने के लिए उपर्युक्त छवियों में अंदरूनी "बॉक्स" को संपादित करना होगा। क्या आप अपना प्रश्न संपादित कर सकते हैं और अपनी छविबटन एक्सएमएल घोषणा में से एक पोस्ट कर सकते हैं। शायद मैं गलत समझ रहा हूं कि आप क्या करने की कोशिश कर रहे हैं, इससे मुझे और अधिक स्पष्ट हो जाएगा। – FoamyGuy

3

आप एक xml फ़ाइल में कुछ रख सकते हैं, उदाहरण के लिए, custom_button.xml और फिर सेट बटन दृश्य में background="@drawable/custom_button"

इस लिंक को देखें के रूप में वहाँ एक xml उदाहरण है: Standard Android Button with a different color

मैं अपने कोड में यह प्रयोग किया जाता है और यह अभी जिस तरह मैं चाहता था काम किया।

संदर्भ: Standard Android Button with a different color


संपादित:

आप बल्कि का प्रयोग करेंगे तो हो सकता है कि आप एक सीमा निर्धारित करने की कोशिश करनी चाहिए। उदाहरण के लिए (संदर्भ: Android - border for button):

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <gradient android:startColor="#FFFFFF" 
    android:endColor="#00FF00" 
    android:angle="270" /> 
    <corners android:radius="3dp" /> 
    <stroke android:width="5px" android:color="#000000" /> 
</shape> 

या, आप बटन के लिए शैली/विषय सेट करने का प्रयास कर सकता है। (लेकिन यह एक अलग फाइल में होगा) शैली/विषय में बटन के विभिन्न राज्यों जैसे फोकस/सक्षम/अक्षम/आदि

पृष्ठभूमि रंग/छवि को सेट करने और प्रभाव को हाइलाइट करने पर क्लिक करने के लिए रंग विशेषताओं में शामिल हैं, पृष्ठभूमि = "@ drawable/my_button":

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
    android:state_pressed="true" 
    android:drawable="@drawable/btn_pressed" /> 
    <item 
    android:state_pressed="false" 
    android:drawable="@drawable/btn_normal" /> 
</selector> 

फिर आप संपत्ति एंड्रॉयड स्थापना करके एक बटन के लिए इस चयनकर्ता आवेदन कर सकते हैं: यहाँ एक उदाहरण (How to programmatically setting style attribute in a view संदर्भ) है।

+0

इसका मतलब यह होगा कि मुझे प्रति राज्य एक छवि निर्दिष्ट करना है जो मैं नहीं करना चाहता जैसा मैंने समझाया – Ayyoudy

1

आप अपनी समस्या का समाधान करने के लिए ImageButton के बजाय ImageView का उपयोग कर सकते हैं। कृपया एंड्रॉइड सेट करें: ImageView की पृष्ठभूमि संपत्ति माता-पिता के पृष्ठभूमि रंग पर।

1

आप अपने xml फ़ाइल में यह लिख सकते हैं:

android:background="@null" 

यह मेरे लिए काम किया।

0

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

@android:color/transparent** 
<ImageButton 
android:id="@+id/ImageButton05" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_gravity="center" 
android:background="@android:color/transparent" 
android:background="@drawable/button" /> 

आशा व्यक्त की कि मदद किसी