2010-03-16 12 views
20

मैं एक ऐपविड्ज बनाने की कोशिश कर रहा हूं, जिसमें टेक्स्ट व्यू का पृष्ठभूमि रंग निर्दिष्ट आवधिक अंतराल पर यादृच्छिक रूप से बदलता है।एंड्रॉइड ऐपविजेट टेक्स्ट व्यू: रन टाइम पर पृष्ठभूमि रंग कैसे सेट करें

TextView के रूप में

<?xml version="1.0" encoding="utf-8" ?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/widget" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" > 
    <TextView 
     android:id="@+id/message" 
     android:background="#ff99ff" 
     android:text="Hello Widget" /> 
</LinearLayout> 

अद्यतन विधि में लेआउट xml फ़ाइल में परिभाषित किया गया है, मैं

RemoteViews remoteView=new RemoteViews(context.getPackageName(),R.layout.widget_message); 

के रूप में लेआउट लोड TextView की पृष्ठभूमि मैं निम्नलिखित बयान का इस्तेमाल किया बदलने के लिए

remoteView.setInt(R.id.message, "setBackgroundResource", R.color.col_1); 

लेकिन मुझे विजेट लोड करने में समस्या कह रही है। अगर मैं उपर्युक्त रेखा को हटा देता हूं तो सब कुछ ठीक काम करता है।

LogCat का कहना है:

updateAppWidget, किसी भी दृश्य नहीं पा सके त्रुटि दृश्य का उपयोग कर

android.widget.RemoteViews $ ActionException: दृश्य: android.widget.TextView नहीं कर सकते उपयोग RemoteViews साथ विधि: setBackgroundResource (int)

उत्तर

0

कारण यह है कि RemoteViews के माध्यम से आप सिर्फ एक सीमित कॉल कर सकते हैं है तरीकों का माउंट। यदि यह निषिद्ध है तो आपको इस तरह का संदेश मिलता है।

टॉम

+0

बिल्कुल। आप केवल उन विधियों का उपयोग कर सकते हैं जिनमें @RemotableViewMethod एनोटेशन –

1

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

0

मुझे इस बारे में अजीब लगता है कि यह मेरे नेक्सस एक (2.2) पर बहुत अच्छा काम करता है, लेकिन एचटीसी टैटू (1.6) पर बिल्कुल नहीं। मैं कुछ एमुलेटर परीक्षणों को चलाने और चलाने के लिए जा रहा हूं और देख रहा हूं कि यह कुछ अंतर्निहित यूआई रेंडरिंग कोड को आलसी रूप से लागू करने वाला एचटीसी का एक और मामला नहीं है, जिसे मैं पहले से ही टैटू (लेआउट स्टॉक एंड्रॉइड 1.6 की तुलना में अलग-अलग प्रस्तुत करता हूं) के साथ मिला हूं।

आप किस डिवाइस पर इसका परीक्षण कर रहे थे?

+0

है मेरे 2.1 एमुलेटर पर काम नहीं करता है। शायद एंड्रॉइड 2.2 में प्रतिबंध हटा दिया गया था ?? एंड्रॉइड डेवलपर्स समूह पर भी [यह चर्चा] (http://groups.google.com/group/android-developers/browse_thread/thread/aa000a36eadafaa5/a406589560d76784#a406589560d76784) देखें: ऐसा लगता है कि यह एक प्रसिद्ध सीमा – MarkJ

+0

है मैं क्या करता हूं: views.setImageViewBitmap (R.id.background, BitmapFactory.decodeResource (context.getResources(), info.backgroundImageId)); यह बहुत अधिक परेशान और कम कुशल है, लेकिन यह अब मुझे डाउनलोड करने योग्य विषयों को जोड़ने की अनुमति देता है – DavidG

0

जब आप 2.2 एमुलेटर चलाते हैं तो एमुलेटर इसे जाने देगा, इसलिए मुझे लगता है कि प्रतिबंध 2.2 के रूप में उठाया गया है।

1

एंड्रॉइड 2.2 के रूप में इस विधि को पहले नहीं कहा जा सकता है।

55

इसे आज़माएं यह ठीक काम करेगा।

remoteView.setInt(R.id.message, "setBackgroundColor", 
     android.graphics.Color.BLACK); 
+0

यदि मैं ड्रॉइंग को बरकरार रखना चाहता हूं तो क्या होगा? – TheOnlyAnil

+1

लाइनरलाइट जैसे व्यू ग्रुप पर काम नहीं करता है, टेक्स्टव्यू – IHeartAndroid

+0

जैसे विचारों पर काम करता है यह समाधान व्यू ग्रुप पर काम करता है मैंने कोशिश की। – Abdullah

6

आप पाठ के ही रंग सेट करना चाहते हैं,

remoteViews.setInt(R.id.tvAmountThisYear, "setTextColor", 
       android.graphics.Color.RED); 
2

contentView.setInt (R.id.tv_contactText, "setBackgroundColor", रंग का प्रयोग करें।parseColor (hexColor));

+0

यह मेरे लिए काम किया .... वोला – peter

4

आप TextView, जहां पृष्ठभूमि कुछ drawable संसाधन में परिभाषित किया गया है की पृष्ठभूमि के रूप में कुछ आकार है, तो आप

remoteViews.setInt(R.id.change,"setBackgroundResource", R.drawable.my_drawable_new); 

ऊपर कोड बयान में उपयोग कर सकते हैं, R.id.change TextView है कुछ पृष्ठभूमि संसाधनों के साथ और आपने अपने ड्रॉइंग फ़ोल्डर में कुछ संसाधन (my_drawable और my drawable_new) को परिभाषित किया है।

<TextView 
    android:id="@+id/change" 
    android:background="@drawable/my_drawable"> 
</TextView 
संबंधित मुद्दे