Modification de la mise en page du widget par programme

Disons que j'ai deux mises en page pour un widget: Layout1 et Layout2. La valeur par défaut pour le widget est Layout1, mais j'autorise l'utilisateur à choisir la disposition à laquelle il souhaite que le widget soit. Donc, si l'utilisateur passe à Layout2, comment modifier de manière programmée la mise en page avec Layout2?

Il n'y a pas de méthode setContentView pour les widgets comme les activités.

  • Questions sur la préparation d'un apk pour l'App Store d'Amazon
  • Comment ajouter une barre de défilement à la disposition relative?
  • Intellij IDEA s'est écrasé et lance une erreur
  • Android utilisant des mises en page comme modèle pour créer plusieurs instances de mise en page
  • Android: Comprendre le processus d'installation d'APK
  • Lire tous les numéros de téléphone de contact dans Android
  • Merci

  • Exiger le projet Gradle à partir d'un autre répertoire
  • Où est jarsigner?
  • Comment inverser Geocode dans google maps api 2 Android
  • Un périphérique Android ne s'affiche pas dans DDMS
  • Comment mettre le texte à gauche d'un bouton radio dans Android
  • Android Toast a commencé à partir de l'affichage Service uniquement une fois
  • 2 Solutions collect form web for “Modification de la mise en page du widget par programme”

    Vous devez choisir la mise en page lorsque vous créez votre RemoteView. Dans mon code widget:

    public static RemoteViews buildUpdate(Context context, String action) { RemoteViews updateViews; SharedPreferences prefs = context.getSharedPreferences(PREFS_NAME, 0); String typeface = prefs.getString("typeface", "sans"); int layoutId = R.layout.widget_sans; if ("monospace".equals(typeface)){ layoutId = R.layout.widget_mono; } else if ("serif".equals(typeface)){ layoutId = R.layout.widget_serif; } updateViews = new RemoteViews(context.getPackageName(), layoutId); //actually do things here //then finally, return our remoteView AppWidgetManager.getInstance(context).updateAppWidget( new ComponentName(context, FuzzyWidget.class), updateViews); } 

    Merci Yoni.

    Je voulais juste ajouter à votre code. Lorsque vous obtenez l'objet RemoteViews, vous spécifiez le contexte et l'ID de mise en page. C'est là que vous définissez la disposition que vous souhaitez afficher.

    Par exemple…

      RemoteViews views = null; if (1 == 1) views = new RemoteViews(m_context.getPackageName(), R.layout.Layout1); else views = new RemoteViews(m_context.getPackageName(), R.layout.Layout2); AppWidgetManager.getInstance(context).updateAppWidget( new ComponentName(context, FuzzyWidget.class), views); 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.