2011-04-04 25 views
5

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

चयनकर्ता फ़ाइल login_button.xml:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <!-- Image display in background in select state --> 
    <item android:state_pressed="true" android:drawable="@drawable/login_button_down" /> 

    <!-- Image display in background in select state --> 
    <item android:state_focused="true" android:drawable="@drawable/login_button_down" /> 

    <!-- Default state --> 
    <item android:drawable="@drawable/login_button" /> 
</selector> 

तब मैं बटन शैली के लिए एक कस्टम styles.xml फ़ाइल बनाया:

<style name="login_button_style" parent="@android:style/Widget.Button"> 
     <item name="android:gravity">center_vertical|center_horizontal</item> 
     <item name="android:textColor">#FF000000</item> 
     <item name="android:shadowColor">#FFFFFFFF</item> 
     <item name="android:shadowDx">0</item> 
     <item name="android:shadowDy">1</item> 
     <item name="android:shadowRadius">0.2</item> 
     <item name="android:textSize">13dp</item> 
     <item name="android:textStyle">bold</item> 
     <item name="android:background">@drawable/login_button</item> 
     <item name="android:focusable">true</item> 
     <item name="android:clickable">true</item> 
    </style> 

फिर themes.xml में मेरे विषय फाइल करने के लिए इस शैली लागू

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="customTheme" parent="@android:style/Theme.NoTitleBar" > 
     <item name="android:editTextStyle">@style/login_edittext_style</item> 
     <item name="android:buttonStyle">@style/login_button_style</item> 
     <item name="android:textViewStyle">@style/login_textview_style</item> 
    </style> 
</resources> 

और आखिरकार लेआउट फ़ाइल में बटन जोड़ा गया:

<Button 
    android:text="@string/login_text" 
    android:id="@+id/buttonSignIn" 
    android:layout_width="130dp" 
    android:layout_height="wrap_content"> 
</Button> 

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

संपादित करें:

जाहिर है सामान्य स्थिति, काम कर रहा है, क्योंकि यह यह चयनकर्ता xml फ़ाइल से छवि है हो जाता है। अब मैं सोच रहा हूं कि अन्य राज्य क्यों नहीं हैं ...

+0

आप 'एंड्रॉयड के रूप में' login_button' जगह: background' यह काम करता है? – Macarse

+0

@Macarse No. बटन एंड्रॉइड में जोड़ा गया: पृष्ठभूमि = "@ drawable/login_button", themes.xml में बटन शैली को टिप्पणी करने का भी प्रयास किया - परिणाम 0. – evilone

+0

क्या यह एक शैली या विषय है? और आप इसे अपने बटन या अपनी गतिविधि पर कैसे लागू कर रहे हैं? –

उत्तर

5

मैंने सोचा कि शायद नामकरण के साथ कुछ करना है, इसलिए मैंने login_button की तुलना में अलग-अलग नाम वाले बटन स्टेट छवियों का नाम दिया, क्योंकि चयनकर्ता xml फ़ाइल का एक ही नाम है। और मैंने अपनी चयनकर्ता एक्सएमएल फ़ाइल भी संपादित की।

चयनकर्ता xml फ़ाइल:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <!-- Image display in background in select state --> 
    <item android:state_pressed="true" android:drawable="@drawable/login_btn_down" /> 

    <!-- Image display in background in select state --> 
    <item android:state_focused="true" android:drawable="@drawable/login_btn_down" /> 

    <!-- Default state --> 
    <item android:drawable="@drawable/login_btn" />  
</selector> 
संबंधित मुद्दे