2011-06-01 5 views
9

(मेरा पूरा विजेट लेआउट का हिस्सा)विजेट लेआउट पृष्ठभूमि बदलने के लिए प्रोग्राम के

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:background="@drawable/widget_background_dark_4x2" 
android:orientation="horizontal" 
android:id="@+id/widget_main" 
> 

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

remoteView.setTextColor(R.id.text_view1, Color.WHITE); 

: दूरस्थ विचारों का उपयोग उदाहरण के लिए मैं कुछ इस तरह कर रही द्वारा एक TextView का रंग बदल सकते हैं। मैं यह कोशिश की थी:

remoteView.setBitmap(R.id.widget_main, "setBackgroundDrawable", ((BitmapDrawable) context.getResources().getDrawable(R.drawable.widget_background_dark_4x2)).getBitmap()); 

लेकिन मैं निम्नलिखित त्रुटि मिलती है:

06-01 22:46:36.305: WARN/AppWidgetHostView(244): android.widget.RemoteViews$ActionException: view: android.widget.LinearLayout doesn't have method: setBackgroundDrawable(android.graphics.Bitmap) 

किसी भी मदद के इस के साथ बहुत सराहना की जाएगी।

< < संपादित करें >> भी इस की कोशिश की है:

06-01 23:11:26.039: WARN/AppWidgetHostView(244): updateAppWidget couldn't find any view, using error view 06-01 23:11:26.039: WARN/AppWidgetHostView(244): android.widget.RemoteViews$ActionException: view: android.widget.LinearLayout doesn't have method: setBackgroundDrawable(android.graphics.Bitmap)

उत्तर

7

ठीक है, अच्छी तरह से एकमात्र समाधान है कि मैं आ रहा हो सकते हैं:

Bitmap bitmap = ((BitmapDrawable)context.getResources().getDrawable(R.drawable.widget_background_light_4x2)).getBitmap(); 
remoteView.setBitmap(R.id.widget_main, "setBackgroundDrawable",bitmap); 

लेकिन दुर्भाग्य से निम्नलिखित त्रुटि मिलती है इसके लिए लाइनरलायआउट में पृष्ठभूमि छवि को प्रदर्शित करने के तरीके को बदलना था। जैसा कि आप ऊपर देख सकते हैं मैं छवि को प्रदर्शित करने के लिए एंड्रॉइड: पृष्ठभूमि टैग का उपयोग कर रहा था। मैं जो कर रहा था वह था कि मैंने इसे हटा दिया और फिर मेरे पूरे विजेट लेआउट को घेर लिया (जो एक रिलेटिवेलआउट के अंदर एक लाइनरलेआउट के अंदर था। तब मेरे पास अभी रिलेवेटिवआउट के भीतर एक छवि दृश्य डीकॉल किया गया था और उसके बाद बाकी विजेट्स लाइनरलेआउट शीर्ष पर बैठे थे इसके बारे में। तब मेरे कोड के भीतर मैं सिर्फ imageView स्रोत दूरस्थ दृश्य के माध्यम से निर्धारित किया है और यह एक इलाज की तरह काम किया।

नहीं

सबसे खूबसूरत/यह कोडिंग के कारगर तरीका है, लेकिन यह काम किया!

+1

यह उपयोगी है .. – Fon

28

आप की कोशिश की :

remoteView.setInt(R.id.widget_main, "setBackgroundResource", R.drawable.widget_background_dark_4x2); 
+0

यह मेरे लिए काम किया साझा करने के लिए धन्यवाद :)) – khusrav

+0

@kh usrav widget_background_dark_4x2 सटीक आकार क्या है आप मुझे साझा कर सकते हैं। मैं इस –

+0

@ लाल पर काम कर रहा हूं। ठीक है मेरे पास यह सटीक पृष्ठभूमि नहीं है। आप यहां एप विजेट्स के आकार बदलने दिशानिर्देशों की जांच कर सकते हैं: http://developer.android.com/guide/practices/ui_guidelines/widget_design.html – khusrav

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

  • कोई संबंधित समस्या नहीं^_^