【问题标题】:How to set Widget button visibility?如何设置小部件按钮的可见性?
【发布时间】:2013-07-19 21:07:09
【问题描述】:

嗨,首先我很抱歉我的英语不好。如何设置 RemoteViews .setViewVisibility?当我单击它时,我想隐藏小部件按钮。 这是我的代码。感谢您的帮助。

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
        int[] appWidgetIds) {

    final int N = appWidgetIds.length;
    for (int i = 0; i < N; i++){

        int appId = appWidgetIds[i];
      widget = new RemoteViews(context.getPackageName(), R.layout.widget_wyglad);
      Intent Tv = new Intent(context, client_widget.class);
      Tv.setAction(AKCJA);
      Tv.putExtra("test", AKCJA);
      PendingIntent ptv = PendingIntent.getBroadcast(context, 0, Tv, 0);
      widget.setOnClickPendingIntent(R.id.bt_wid_tv, ptv);
      appWidgetManager.updateAppWidget(appId, widget);
    }

  super.onUpdate(context, appWidgetManager, appWidgetIds);
}

@Override
public void onReceive(Context context, Intent intent) {

    Bundle extras = intent.getExtras();
    if (extras != null){

        widget.setViewVisibility(R.id.bt_wid_tv, View.GONE);

    }
    else {Log.d("ERR", "EXTRAS ELSE");}

    super.onReceive(context, intent);   

}

}

【问题讨论】:

    标签: android button widget set onupdate


    【解决方案1】:

    关于隐藏视图,您已经做对了所有事情。只需将其包含在您的代码中-

    在你的 onReceive 方法中-

    if (intent.getAction().equals(AKCJA)) {
    widget.setViewVisibility(R.id.bt_wid_tv, View.GONE);
    }
    

    【讨论】:

    • 我尝试了两种解决方案,但没有任何反应。我应该在之后尝试更新小部件:widget.setViewVisibility(R.id.bt_wid_tv, View.GONE)
    • yes..exactly..在更改视图后始终使用此代码- appWidgetManager.updateAppWidget(appId, widget);
    【解决方案2】:

    您是否尝试过使用INVISIBLE 而不是GONE? Gone 将删除视图,就好像它从未存在过一样。 invisible 将保留视图在布局中的位置,但使其不可见。

    rv.setViewVisibility(R.id.bt_wid_tv, View. INVISIBLE);
    

    【讨论】:

      【解决方案3】:

      是的,它终于奏效了, 这就是我要改变的:

      int appId = appWidgetIds[i]; 
      

      改为:

      appId = appWidgetIds[i];
      

      接下来我添加静态 int appId:

      public class client_widget extends AppWidgetProvider {
      
      static int appId;
      

      最后添加这个新的 AppWidgetManager 和更新行:

      public void onReceive(Context context, Intent intent) {
      
      AppWidgetManager newAppWidgetManager = AppWidgetManager.getInstance(context);
      
              if (intent.getAction().equals(AKCJA)) {
                  AppWidgetManager nowy = AppWidgetManager.getInstance(context);
      
                  widget.setViewVisibility(R.id.bt_wid_tv, View.GONE);
      
                  newAppWidgetManager.updateAppWidget(appId, widget);
      

      感谢@Naddy

      【讨论】:

        猜你喜欢
        • 2020-06-12
        • 2011-09-02
        • 2014-08-23
        • 2019-11-04
        • 2012-01-20
        • 2018-06-27
        • 2021-12-13
        • 2017-06-11
        • 2013-11-30
        相关资源
        最近更新 更多