Android установить фон виджета - PullRequest
1 голос
/ 06 февраля 2011

В моей папке drawable-hdpi у меня есть 4 файла изображений (.png), которые служат фоном awidget. По умолчанию для LinearLayout установлено android: background = "@ drawable / goldgreenbg". Я создал экран настроек, чтобы позволить пользователю менять фон. Как это сделать? Я хотел бы использовать этот код для этого:

      if (listpref.equals("color1"))
          {
          Toast.makeText(EditPreferences.this,  "Black" + listpref, Toast.LENGTH_LONG).show();

          }

else if (listpref.equals("color2"))
          {
              Toast.makeText(EditPreferences.this,  "Brown" + listpref, Toast.LENGTH_LONG).show();
          }

Обновление: Где я должен поставить этот код? MainActivity.java: для деятельности UpdateService.java: для виджета EditPreferences.java: для предпочтений Main.xml включает просмотр списка, а idgetlayout является его идентификатором.

  setContentView(R.layout.main);
  preferences = PreferenceManager.getDefaultSharedPreferences(this);
  String listpref = preferences.getString("listPref", "n/a");              
  LinearLayout ll = (LinearLayout) findViewById(R.id.widgetlayout);
  if (listpref.equals("color1"))
  {
      Toast.makeText(MainActivity.this, "Black" + listpref, Toast.LENGTH_LONG).show();
      ll.setBackgroundDrawable(getResources().getDrawable(R.drawable.blackbg));
  }
  else if (listpref.equals("color2"))
  {
      Toast.makeText(MainActivity.this, "Brown" + listpref, Toast.LENGTH_LONG).show();
      ll.setBackgroundDrawable(getResources().getDrawable(R.drawable.brownbg));
  }

Ответы [ 2 ]

1 голос
/ 06 февраля 2011

Предполагая, что у вас уже есть LinearLayout на вашем экране (используя setContentView), вы можете довольно легко изменить фон следующим образом:

yourLinearLayout.setBackgroundDrawable(getResources().getDrawable(R.drawable.blackbg));

(и получить этот макет, используя findViewById() курса)

0 голосов
/ 22 июня 2011

Я нашел решение.

EditPreferences.java:

final Preference listpref = getPreferenceScreen().findPreference("listPref");
        listpref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() 
        {
         public boolean onPreferenceChange(Preference p, Object newValue) 
         {
          String color = (String) newValue;

          if (color.equals("color1"))
          {
              RemoteViews updateViews = new RemoteViews(EditPreferences.this.getPackageName(), R.layout.main);
              updateViews.setTextColor(R.id.widget_textview, Color.rgb(208, 202, 202));
              updateViews.setTextColor(R.id.widget_textview2, Color.WHITE);
              updateViews.setTextColor(R.id.widget_textview3, Color.rgb(176, 175, 175));
             // updateViews.setImageViewBitmap(R.id.ImageView01, ((BitmapDrawable)EditPreferences.this.getResources().getDrawable(R.drawable.forestbg)).getBitmap());
              updateViews.setImageViewResource(R.id.ImageView01, R.drawable.blacktrans);            
              ComponentName thisWidget = new ComponentName(EditPreferences.this, HelloWidget.class);
              AppWidgetManager manager = AppWidgetManager.getInstance(EditPreferences.this);
              manager.updateAppWidget(thisWidget, updateViews);
 }
          else if (color.equals("color2"))
          {
              RemoteViews updateViews = new RemoteViews(EditPreferences.this.getPackageName(), R.layout.main);
              updateViews.setTextColor(R.id.widget_textview, Color.rgb(23, 81, 11));
              updateViews.setTextColor(R.id.widget_textview2, Color.rgb(232, 232, 107));
              updateViews.setTextColor(R.id.widget_textview3, Color.rgb(23, 81, 11));
              updateViews.setImageViewBitmap(R.id.ImageView01, ((BitmapDrawable)EditPreferences.this.getResources().getDrawable(R.drawable.goldgreenbg)).getBitmap());
              // updateViews.setImageViewResource(R.id.ImageView01, R.drawable.goldgreenbgf);           
              ComponentName thisWidget = new ComponentName(EditPreferences.this, HelloWidget.class);
              AppWidgetManager manager = AppWidgetManager.getInstance(EditPreferences.this);
              manager.updateAppWidget(thisWidget, updateViews);
  }
  return true;
         }
        });
public void onStart(Intent intent, int startId) {
          getPrefs();
}
     private void getPrefs() {
            SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
            ListPreference = prefs.getString("listPref", "nr1");
     }

Таким образом, он работает отлично.

...