Cómo ocultar / mostrar el botón en el widget de pantalla de inicio de Android

Soy un principiante del desarrollo de androide. Actual, Estoy trabajando en la creación de un pequeño widget de pantalla de inicio que está cambiando el fondo de pantalla del móvil al hacer clic en el botón. El fondo de pantalla de configuración funciona bien, pero quiero hacer una pequeña imagen (ImageView) para permitir al usuario mostrar y ocultar este botón de configuración.

Lo configuro en servicio y uso PendingIntent con el fin de adjuntar mi evento onClick al mismo servicio, pero no puedo detectar la propiedad de botón si mostrar u ocultar.

Por lo tanto, ¿hay alguna sugerencia y solución para que mi ImageView muestre u oculte el botón en el widget de pantalla de inicio?

Gracias por adelantado..

Puede utilizar mButton.setVisibility (View.GONE) para ocultar el botón.

También puede comprobar el estado de la visibilidad del botón en una variable booleana utilizando mButton.isShown ().

Editado:

Por ejemplo

En onReceive() de AppWidgetProvider ,

  remoteViews = new RemoteViews( context.getPackageName(), R.layout.yourwidgetlayout ); remoteViews.setViewVisibility(viewId, visibility); 

Así que para ocultar su botón

  remoteViews.setViewVisibility(R.id.buttonId,View.INVISIBLE); 

Edit – 2: Según el comentario de Kartik,

Código de muestra:

  public class ButtonHideShowWidget 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(); } } } } 

Llame a setVisibility (View.Invisible); Con la ayuda del botón de objeto creado por usted después de que el usuario hace clic en el botón.

 <pre><code> // 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); </code></pre> 

No deberías estar haciendo esto en el método onReceive (Context, Intent) como se menciona en la documentación oficial

Esto se llama para cada difusión y antes de cada uno de los métodos de devolución de llamada anteriores. Normalmente no es necesario implementar este método porque la implementación predeterminada de AppWidgetProvider filtra todas las transmisiones App Widget y llama a los métodos anteriores según corresponda.

Debería hacer esto en onAppWidgetOptionsChanged (). Vea los documentos oficiales.

 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(); } } } } 
  • Las guías de la API de Android son un poco confusas para mí sobre el atributo android: onClick XML
  • ¿Diferencia entre el evento OnClick () y OnClickListener?
  • Abrir la lista de contactos del dispositivo en el evento de clic de botón
  • Android OnClickListener no dispara en GridView (sólo 2.2)
  • ¿Cómo pasar el evento onClick a su padre en Android?
  • ¿Cómo agregar onclicklistener a la vista de texto generada dinámicamente?
  • OnItemClickListener usando ArrayAdapter para ListView
  • Android se congela cuando hay una NullPointerException en OnClickListener.onClick (otras tareas no se pueden iniciar)
  • RecyclerView onItemClicked devolución de llamada
  • Android: Evento de clic de botón
  • OnClick no activado en LinearLayout con el niño
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.