如何在android主屏幕小部件中隐藏/显示按钮

Fon*_*Fon 4 user-interface android widget onclick

我是android开发的初学者.目前,我正在创建一个小的主屏幕小部件,点击按钮即可更改手机的壁纸.设置壁纸工作正常,但我想制作一个可点击的小图片(ImageView),以允许用户显示和隐藏此设置按钮.

我在服务上设置它并使用PendingIntent将我的onClick事件附加到同一个服务,但我无法检测按钮的属性是显示还是隐藏.

因此,是否有任何建议和解决方案使我的ImageView显示或隐藏主屏幕小部件中的按钮?

提前致谢..

Hir*_*ral 13

您可以使用mButton.setVisibility(View.GONE)来隐藏按钮.

您还可以使用mButton.isShown()在布尔变量中检查按钮的可见性状态.

编辑:

例如

在onReceive()的AppWidgetProvider,

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

     remoteViews.setViewVisibility(viewId, visibility);
Run Code Online (Sandbox Code Playgroud)

所以隐藏你的Button

     remoteViews.setViewVisibility(R.id.buttonId,View.INVISIBLE);
Run Code Online (Sandbox Code Playgroud)

编辑 - 2: 根据Kartik的评论,

示例代码:

    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();
             }
         }
    }
}
Run Code Online (Sandbox Code Playgroud)