2009-08-02 19 views
156

ListView में simple_list_item_1 के तरीके से व्यवहार करने के लिए मुझे एक सरल TextView चाहिए। यहां एक्सएमएल है:एंड्रॉइड चयनकर्ता और टेक्स्ट रंग

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_height="wrap_content" android:layout_width="fill_parent" 
    android:gravity="center" android:focusable="true" 
    android:minHeight="?android:attr/listPreferredItemHeight" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:background="@android:drawable/list_selector_background" /> 

सब कुछ टेक्स्ट रंग को छोड़कर काम करता है (अपेक्षित) केंद्रित स्थिति में नहीं बदलता है। मैं इसे textAppearanceLargeInverse में कैसे बदलूं?

+0

यदि कोई व्यक्ति xml फ़ाइल की तलाश में है, तो यह यहां है: http://developer.android.com/resources/samples/Home/res/color/bright_text_dark_focused.html – swinefeaster

उत्तर

69

और चयनकर्ता यहां भी उत्तर है। सूत्रों में bright_text_dark_focused.xml के लिए

खोजें, रेस/रंग निर्देशिका के अंतर्गत अपनी परियोजना को जोड़ने और फिर के रूप में

android:textColor="@color/bright_text_dark_focused" 
+4

मुझे लगता है कि यह "primary_text_dark_focused.xml" में बदल गया है। – greg7gkb

+10

यह सिर्फ मेरे दिमाग को उड़ा दिया। मैं श्रोताओं के साथ चीजों को इस समय पाठ रंग बदलने के लिए संभाल रहा हूं। मंजिल पर जबड़े। प्रतिभाशाली! –

+0

धन्यवाद! मुझे इसकी ही खोज थी! – Zzokk

0

क्या आपने setOnFocusChangeListener को आजमाया है? हैंडलर के भीतर, आप टेक्स्ट उपस्थिति बदल सकते हैं।

उदाहरण के लिए:

TextView text = (TextView)findViewById(R.id.text); 
text.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
    public void onFocusChange(View v, boolean hasFocus) { 
     if (hasFocus) { 
      ((TextView)v).setXXXX(); 
     } else { 
      ((TextView)v).setXXXX(); 
     } 
    } 
}); 

इसके बाद आप आवेदन कर सकते हैं जो भी परिवर्तन आप चाहते हैं जब यह या नहीं ध्यान केंद्रित कर रहा है। वैश्विक फोकस परिवर्तनों को सुनने के लिए आप ViewTreeObserver का भी उपयोग कर सकते हैं।

उदाहरण के लिए:

View all = findViewById(R.id.id_of_top_level_view_on_layout); 
ViewTreeObserver vto = all.getViewTreeObserver(); 
vto.addOnGlobalFocusChangeListener(new ViewTreeObserver.OnGlobalFocusChangeListener() { 
    public void onGlobalFocusChanged(
     View oldFocus, View newFocus) { 
     // xxxx 
    } 
}); 

मुझे आशा है कि इस मदद करता है या आप विचारों देता है।

+1

मैं शुरुआत में इस तरह से चला गया हूं लेकिन टेक्स्ट कुछ कारणों से रंग नहीं बदला। – yanchenko

351

मैं कई परीक्षण करने से मिल गया जब तक कि एक, काम तो TextView से देखें: रेस /color/button_dark_text.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true" 
      android:color="#000000" /> <!-- pressed --> 
    <item android:state_focused="true" 
      android:color="#000000" /> <!-- focused --> 
    <item android:color="#FFFFFF" /> <!-- default --> 
</selector> 

रेस/लेआउट/view.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="EXIT" 
     android:textColor="@color/button_dark_text" /> 
</LinearLayout> 
+7

: इस चयनकर्ता xml – neufuture

+4

@neufuture के साथ ऐप क्रैश करने योग्य: आपको 'android: textColor =" @ color/button_dark_text "' – Paul

+1

का उपयोग करने की आवश्यकता है रंग सूची सूचियों का वर्णन करने वाला एक दस्तावेज़ है: http: // developer.android.com/guide/topics/resources/color-list-resource.html – Rick77

26

यहाँ मेरी कार्यान्वयन है, जो सूची में आइटम के रूप में वास्तव में बर्ताव करता है (कम से कम 2.3 पर)

रेस/लेआउट/list_video_footer.xml

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <TextView 
     android:id="@+id/list_video_footer" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:background="@android:drawable/list_selector_background" 
     android:clickable="true" 
     android:gravity="center" 
     android:minHeight="98px" 
     android:text="@string/more" 
     android:textColor="@color/bright_text_dark_focused" 
     android:textSize="18dp" 
     android:textStyle="bold" /> 

</FrameLayout> 

रेस/रंग/bright_text_dark_focused.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:state_selected="true" android:color="#444"/> 
    <item android:state_focused="true" android:color="#444"/> 
    <item android:state_pressed="true" android:color="#444"/> 
    <item android:color="#ccc"/> 

</selector> 
+0

यह मेरे लिए अच्छा काम करता है, और मेरे मामले में मेरे TabHost कार्यान्वयन – oddmeter

3
है

यहां चयनकर्ता का उदाहरण दिया गया है। यदि आप ग्रहण का उपयोग करते हैं, तो यह कुछ सुझाव नहीं देता है जब आप ctrl और space दोनों पर क्लिक करते हैं:/आपको इसे टाइप करना होगा।

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:drawable="@drawable/btn_default_pressed" android:state_pressed="true" /> 
<item android:drawable="@drawable/btn_default_selected" 
    android:state_focused="true" 
    android:state_enabled="true" 
    android:state_window_focused="true" /> 
<item android:drawable="@drawable/btn_default_normal" /> 

आप संदर्भ के लिए देख सकते हैं;

http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList

2

मैं हमेशा इस के बाद और अधिक खोज के बिना ऊपर समाधान का इस्तेमाल किया। ;-)

हालांकि, आज मैं कुछ लेकर आया और इसे साझा करने के बारे में सोचा।:)

यह सुविधा एपीआई 1 से वास्तव में उपलब्ध है और ColorStateList, जहां हम विजेट के विभिन्न राज्यों के लिए एक रंग की आपूर्ति कर सकते (जैसा कि हम पहले से ही पता) कहा जाता है।

यह भी बहुत अच्छी तरह से प्रलेखित है, here.

1

तो टैब इस चयनकर्ता परिभाषा मेरे लिए काम किया में TextViews का उपयोग कर (क्लाउस Balduino की कोशिश की, लेकिन उसने ऐसा नहीं किया):

<?xml version="1.0" encoding="utf-8"?>  
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <!-- Active tab --> 
    <item 
    android:state_selected="true" 
    android:state_focused="false" 
    android:state_pressed="false" 
    android:color="#000000" /> 

    <!-- Inactive tab --> 
    <item 
    android:state_selected="false" 
    android:state_focused="false" 
    android:state_pressed="false" 
    android:color="#FFFFFF" /> 

</selector> 
17

आदेश यह काम करने के लिए

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true" android:color="#fff"/> 
    <item android:state_activated="true" android:color="#fff"/> 
    <item android:color="#000" /> 
</selector> 

जाहिर कुंजी state_activated="true" राज्य है: सूची दृश्य में चयन पर निम्नलिखित कोड का उपयोग करें।

+6

के लिए हाइलाइट/unhighlighted रंगों को समायोजित करने के लिए काफी अच्छा काम किया है इस फ़ाइल को res/color के अंतर्गत रखना न भूलें फ़ोल्डर –

संबंधित मुद्दे