单击时更改小部件可见性

Posted

技术标签:

【中文标题】单击时更改小部件可见性【英文标题】:Change widget visibility on click 【发布时间】:2012-03-14 23:14:03 【问题描述】:

我的小部件包含两个相对布局。我已经使两个布局都可以点击。以下是布局的ID:

android:id="@+id/upper_layout" 
android:id="@+id/bottom_layout"

现在,我需要的是,如果用户点击upper_layout,bottom_layout 应该是不可见的。

这是我迄今为止尝试过的,但它不起作用。你能检查我做错了什么吗? 或者,也许建议一些其他方法来实现这一点。

代码:

public class BobsWidget extends AppWidgetProvider 

    public static String ACTION_WIDGET_RECEIVER = "Clicked";

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

        RemoteViews remoteViews = new RemoteViews(context.getPackageName(),
                R.layout.main);
        Intent active = new Intent(context, BobsWidget.class);
        active.setAction(ACTION_WIDGET_RECEIVER);

        PendingIntent actionPendingIntent = PendingIntent.getBroadcast(context,
                0, active, 0);

        remoteViews.setOnClickPendingIntent(R.id.upper_layout,
                actionPendingIntent);

        appWidgetManager.updateAppWidget(appWidgetIds, remoteViews);

    

    @Override
    public void onReceive(Context context, Intent intent) 
        // TODO Auto-generated method stub
        // check, if our Action was called
        if (intent.getAction().equals(ACTION_WIDGET_RECEIVER)) 
            RemoteViews remoteViews = new RemoteViews(context.getPackageName(),
                    R.layout.main);
            remoteViews.setViewVisibility(R.id.bottom_layout, View.INVISIBLE);
        
        super.onReceive(context, intent);
    


【问题讨论】:

【参考方案1】:

您在 Android 3.0 或更高版本中提供了多个内置小部件功能。请查看此link

【讨论】:

【参考方案2】:

我想你忘记更新小部件了。 你有没有尝试过这样的事情?

remoteViews.setViewVisibility(R.id.bottom_layout, View.INVISIBLE);
final ComponentName provider = new ComponentName(context, this.getClass());
appWidgetManager.updateAppWidget(provider, views);

【讨论】:

以上是关于单击时更改小部件可见性的主要内容,如果未能解决你的问题,请参考以下文章

如何更改按钮单击 GTK c 上的多个小部件属性

颤振小部件中的可见性没有改变

按钮单击小部件时更改布局

如何处理自定义 android 视图/小部件的可见性更改

小部件可见性更改时在 MacOS 中呈现 Qt 错误表单

在小部件中单击 textview 时更改图标