2010-11-29 8 views
0

私は単純なウィジェットを開発しており、実行時にpngファイル(または同様のもの)からバックグラウンドを変更したいと思います。これは可能ですか?あれば、どうですか?誰かが簡単な例を提供できますか?実行時にウィジェットの背景を変更する

おかげ

答えて

3

使用何かのように:

views.setImageViewBitmap(R.id.widgetBackground, ((BitmapDrawable)context.getResources().getDrawable(R.drawable.YOUR_BACKGROUND)).getBitmap()); 

ファイルYOUR_BACKGROUND PNGです。

viewsオブジェクトはRemoteViewsのインスタンスです。

RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget); 

をこれらの変更後にウィジェットを更新することを忘れないでください: あなたは使用して、インスタンスを取得することができます。

AppWidgetManager mgr = AppWidgetManager.getInstance(context); 
ComponentName me = new ComponentName(context, Widget.class); 
mgr.updateAppWidget(me, views); 
+1

これをどのような視点で使用していますか?私はLinearLayoutで試して、アンドロイドが私に爆破した: – NPike

+0

ウィジェットのレイアウトがListViewの場合、widgetをロードする際の問題 – Choletski

1

setIntまたはRemoteViewsの他のメソッドを使用して、背景イメージまたはその他の値を設定できます。

remoteViews.setInt(R.id.widget_layout、 "setBackgroundResource"、R.drawable.myshape_red);

上記のサンプルは、ウィジェットを別の描画可能な形状に変更するために使用したサンプルです。あなたは単にレイアウトの参照ではなく "id"を渡す必要があります。

2.1では動作しませんのでご注意ください。

+0

これは動作しません、次の警告をスロー: W/AppWidgetHostView(152):android.widget.RemoteViews $ ActionException:android.widget.ImageView RemoteViewsでメソッドを使用することはできません:setBackgroundResource(int) – Egor

+0

私がここでそれをしたときに働く。 https://github.com/trajano/GasPrices/blob/master/src/main/java/net/trajano/gasprices/GasPricesWidgetProvider.java(27行目から46行目を参照) –

+0

これでAndroid 2.1で試しました。働いた。以前はAndroid 1.6で試してみましたが、うまくいきませんでした。 APIレベル3以降でこのメソッドが使用可能であるとドキュメントに記載されていると変です。 – Egor

関連する問題