2012-11-22 19 views
8

प्रत्येक सूची दृश्य आइटम में एक टेक्स्ट व्यू है जिसे मैं कस्टम एडाप्टर के माध्यम से सेट कर रहा हूं। TextView XML एक ही फ़ाइल में नहीं है जहां ListView XML लिखा गया है, मैं चाहता हूं कि जब सूची दृश्य का कोई भी आइटम चुना जाता है तो उस विशेष आइटम का फ़ॉन्ट रंग बदलना चाहिए। मैंने टेक्स्टव्यू के विभिन्न राज्यों को परिभाषित करके भी इसका प्रयास किया, जिसे मैंने चुना, केंद्रित और दबाया लेकिन यह खुराक मेरी समस्या का समाधान नहीं करता है। कृपया मुझे इसके लिए कुछ समाधान सुझाएं। यहां स्निपेट है ..जब टेक्स्टव्यू आइटम का चयन किया जाता है तो टेक्स्ट व्यू का फ़ॉन्ट रंग बदलें

उदाहरण के लिए एक एक्सएमएल फ़ाइल में एक सूचीदृश्य। file1.xml

<ListView 
    android:id="@+id/listView1" 
    android:layout_width="0dp" 
    android:layout_height="fill_parent" 
    android:layout_weight="0.5" 
    android:clickable="true" /> 

और विभिन्न एक्सएमएल में एक TextView .. में रेस/रंग फ़ोल्डर यानी file3.xml पाठ का रंग विशेषता के लिए यानी file2.xml

<TextView 
    android:id="@+id/rowListTextView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:paddingBottom="10dp" 
    android:paddingLeft="10dp" 
    android:paddingTop="10dp" 
    android:text="@string/app_name" 
    android:textColor="@color/file3" 
    android:textSize="10sp" 
    android:textStyle="bold" /> 

फ़ाइल।

<item android:state_selected="true" android:color="@android:color/white"/> 
<item android:state_focused="true" android:color="@android:color/white"/> 
<item android:state_pressed="true" android:color="@android:color/white"/> 
<item android:color="@android:color/black"/> 

+0

टीरापैप का उत्तर सबसे अच्छा जवाब है - मुझे लगता है कि इसे स्वीकार किया जाना चाहिए। – AndrewS

उत्तर

8

टुकड़ा नीचे आप में मदद मिलेगी।

listView.setOnItemClickListener(new OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView <? > adapterView, View rowView, 
    int position, long id) { 
     TextView textView = (TextView) rowView.findViewById(R.id.rowListTextView); 

     textView.setTextColor("Desired Color"); 

    } 
}); 

मैंने सूची स्क्रॉल करते समय पाठ रंग को बनाए रखने जैसे परिदृश्य को शामिल नहीं किया है और आपका चयनित आइटम फ़ोकस से बाहर हो गया है। यह स्निपेट आपको सही दिशा में मार्गदर्शन करेगा।

+1

धन्यवाद vipul मैंने कोशिश की और यह कहीं उस विशेष आइटम के बदलते फ़ॉन्ट रंग के रूप में कहीं मदद की जहां इसे क्लिक किया गया था, लेकिन अब मैं चाहता हूं कि उस विशेष स्थिति से क्लिक किए जाने के बाद इसे मूल रंग बनाए रखना चाहिए। क्या आप इस तरह मेरी मदद कर सकते हैं। धन्यवाद। –

+0

मुझे एक ही समस्या है। –

+1

और बिना क्लिक किए टेक्स्टव्यू के रंग को कैसे बदला जाए, उदाहरण के लिए जब सूची दृश्य बनाया गया हो। – Naskov

22

टेक्स्ट रंग के लिए इस रंग स्थिति सूची को आज़माएं।

<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> 

Android guidestate_activated विशेषता का उल्लेख नहीं है, लेकिन यह मेरे लिए काम करता है।

+1

यह सही उत्तर – AndrewS

+0

'एंड्रॉइड: state_activated' निश्चित रूप से आप चाहते हैं। क्यों यह आश दस्तावेज नहीं है पागल है। मैंने इसे काम करने के लिए लगभग 30 मिनट बिताए, फिर मैंने कोशिश की और यह काम करता है। –

+0

क्या यह छवि के लिए भी संभव है, मैं दो छवियों के बीच स्विच करना चाहता हूं, मैंने एंड्रॉइड की बजाय कोशिश की: एंड्रॉइड के लिए रंग: छवि के लिए src लेकिन मुझे – Lion789

14

चयनकर्ता में:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_activated="true" android:color="#ff0000" /> 
    <item android:state_active="true" android:color="#ff0000" /> 
    <item android:state_pressed="true" android:color="#ff0000" /> 
    <item android:state_selected="true" android:color="#ff0000" /> 
    <item android:state_focused="true" android:color="#ff0000" /> 
    <item android:color="#000000" /> 
</selector> 

गतिविधि में: myListView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);

public void onItemClick(AdapterView<?> parent, View view, 
         int position, long id) { 
        pl=position; 
        myListView.setItemChecked(pl, true); 
        adapter.notifyDataSetChanged(); 
          ..... 

item.xml:

<?xml version="1.0" encoding="utf-8"?> 
    <TextView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@android:id/text1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:textAppearance="?android:attr/textAppearanceListItemSmall" 
    android:gravity="center_vertical" 
    android:textColor="@drawable/selector" 
    android:minHeight="?android:attr/listPreferredItemHeightSmall" 
    /> 

और लाल रंग में मेरी जाँच की आइटम के बाद मैं उन्हें क्लिक करें। केवल एक चेक किया गया आइटम। का आनंद लें!

+0

त्रुटियों में ठीक है। बहुत बढ़िया!! +1। धन्यवाद :) – jagdish

+0

महान कोड !! + 1 :))) –

+0

सूचीदृश्य में तत्व चयन के मामले में, इसे उत्तर स्वीकार किया जाना चाहिए। वास्तव में अच्छा जवाब @ मस्टर। –

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