首页 > 解决方案 > 使用 RemoteViews 设置小部件按钮的可见性

问题描述

我有一个带有一个按钮的小部件,我想将其显示为绿色、琥珀色或红色 - 在加载小部件后,我需要能够以编程方式从一个按钮更改为另一个按钮。我已经尝试了很多不同的方法来解决这个问题,但我所成功的只是改变背景颜色。我正在使用的一种方法是将小部件上的按钮分为三个版本,但只显示我想要的那个。由于这方面的混乱程度,我创建了一个非常小的应用程序来测试这个,让主应用程序独自一人,直到我得到答案。

下面的代码响应 MainActivity 按钮按下:

 public void green (View view){

    Context context = this;
    AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
    ComponentName thisWidget = new ComponentName(context, ExampleAppWidgetProvider.class);

    RemoteViews views =new RemoteViews(context.getPackageName(), R.layout.example_widget);
   views.setInt(R.id.button1, "setVisiblity", VISIBLE);
   views.setInt(R.id.button2, "setVisiblity", GONE);
   views.setInt(R.id.button3, "setVisiblity", GONE);
   views.setInt(R.id.example_widget_button, "setBackgroundColor",android.graphics.Color.RED);

    appWidgetManager.updateAppWidget(thisWidget, views);

}

我知道按钮按下是有效的,因为如果我注释掉可见性行,示例按钮会切换到红色背景,因此小部件正在更新,但如果我包含可见性行,我会得到“加载小部件时出错”。

尝试远程更改此按钮的颜色已成为一个传奇 - 我尝试更改背景色调和背景图像,但似乎只能更改背景颜色,这会在主屏幕上产生相当难看的块。我有一个悲伤的:O(

标签: androidbuttonwidgetvisibility

解决方案


  • 你试试这个:

    views.setViewVisibility(R.id.button1, View.GONE);


推荐阅读