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.
- Cómo borrar el edittext cuando onclick en el botón
- Android: ¿Cómo vas a otra actividad al hacer clic?
- Listview no se puede hacer clic cuando se puede seleccionar la vista de texto dentro de esa vista de lista
- Android: El botón personalizado OnClickListener no se invoca
- No se pudo encontrar un método onClick_Foo (Ver) - la primera vez que se ejecuta en Android Lollipop
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..
- Diferencia en listview.setOnItemClickListener y row.setOnClickListener
- Botones del diseño de Inflated onClick el oyente no funciona
- Android principiante: toque eventos en android gridview
- ¿Por qué no AsyncTasks siempre funcionan dentro de un onClickListener?
- Android RSSI valor de Bluetooth devuelve -32768 siempre?
- Android no puede encontrar mi método onClick
- Android highlight ImageButton onclick
- Android.os.FileUriExposedException: file.jpg expuesto más allá de la aplicación a través de ClipData.Item.getUri ()
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(); } } } }
- ¿Cómo implementar la función SHARE de una aplicación para Android?
- Edición de la leyenda de achartengine