6
votes

Comment masquer / montrer le bouton dans l'écran d'accueil Android Widget

Je suis un débutant du développement Android. Actuelle, je travaille sur la création d'un petit widget d'écran d'accueil qui change de papier peint du mobile, cliquez sur le bouton. Le fond d'écran de réglage fonctionne bien, mais je veux créer une petite image cliquable (imageView) pour permettre à l'utilisateur de montrer et de masquer ce bouton de réglage.

i Configurez-le sur le service et utilisez Passoire pour joindre mon événement ONCLICK au même service, mais je ne peux pas détecter la propriété du bouton, que ce soit ou sache.

Par conséquent, y a-t-il une suggestion et une solution pour créer mon imageView pour afficher ou masquer le bouton du widget d'écran d'accueil?

Merci d'avance ..


0 commentaires

5 Réponses :


1
votes

SETTICIBILITÉ DE L'APPEL (VUE.IVISIBLE); Avec l'aide de l'objet Button créé par vous après que l'utilisateur clique sur le bouton.


2 commentaires

Désolé, je ne sais pas comment puis-je accéder à cet objet bouton de RemoteView?


Je n'ai pas non plus la connaissance de la vue distante mais laissez-moi l'essayer ou étudier quelque chose qui lui est associé alors je vais vous dire la vraie solution.



15
votes

Vous pouvez utiliser mbutton.setVisibilité (vue.gone) pour masquer le bouton.

Vous pouvez également vérifier la visibilité de l'état de la bande de bouton dans une variable booléenne à l'aide de Mbutton.isshown ().

édité:

par exemple

dans onreceive () de appwidgetprovider , xxx < p> Donc pour avoir caché votre bouton xxx

edit - 2: Selon le commentaire de Kartik,

échantillon code: xxx


4 commentaires

J'y pense aussi mais je ne sais pas comment l'appeler via RemoteView


Pouvons-nous vérifier l'état de visibilité actuel de bouton? Il semble que les rediffers ne permettent pas de verrerVispérabilité. Désolé de demander tant de questions.


Vous devez maintenir un drapeau booléen statique pour gérer si votre bouton est invisible ou non. Enregistrez l'état de votre bouton dans le drapeau et pour la maintenance des clics, vous pouvez créer une logique dans la méthode RemoteView.


@HIRAL Je veux ouvrir une activité lorsque vous cliquez sur le widget HomeCreen Comment puis-je obtenir de l'aide?



1
votes
// To remove button
Button button = (Button) findViewById(R.id.button);
button.setVisibility(View.GONE);

// To transparent button
Button button = (Button) findViewById(R.id.button);
button.setVisibility(View.INVISIBLE);

0 commentaires

-1
votes
public class Showing extends AppWidgetProvider {

     private static boolean status = false;

     @Override
     public void onReceive(Context context, Intent intent) {
      super.onReceive(context, intent);
      if (intent.getAction()==null) {
             Bundle extras = intent.getExtras();
             if(extras!=null) {
                 remoteViews = new RemoteViews( context.getPackageName(), R.layout.your_widget_layout );
                 if(status){
                   remoteViews.setViewVisibility(R.id.buttonId,View.INVISIBLE);
                  status = false;
                 }else{
                   remoteViews.setViewVisibility(R.id.buttonId,View.VISIBLE);
                  status = true;
                }
                 watchWidget = new ComponentName( context, ButtonHideShowWidget.class );
                 (AppWidgetManager.getInstance(context)).updateAppWidget( watchWidget, remoteViews );
                 //Toast.makeText(context, "Clicked "+status, 2000).show();
             }
          }
       }
    }

0 commentaires

0
votes

Vous ne devriez pas le faire dans la méthode onreceive (context, intention) comme mentionné dans la documentation officielle

Ceci est appelé à chaque diffusion et avant chacune des méthodes de rappel ci-dessus. Vous n'avez normalement pas besoin d'implémenter cette méthode car l'implémentation par défaut appwidgetProvider filtre tous les widgets d'application diffusent et appelle les méthodes ci-dessus, le cas échéant.

Vous devriez le faire dans OnAppwidgetoptionSchangned (). Voir le Documents officiels.


0 commentaires