android - 使用 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(
解决方案
你试试这个:
views.setViewVisibility(R.id.button1, View.GONE);
推荐阅读
- reactjs - React 原生透明搜索栏
- javascript - window.opener 在 android chrome 上为空(但不是隐身)
- scala - 如何计算 Spark SQL 数据框中的百分比?
- java - 如何关闭 Eclipse Photon 中的“仅对测试源可见”功能?
- string - 无法在 CLang 中初始化模板化类中的静态字符串集,在 GCC 中工作正常
- powershell - 是否有用于 Azure AD 应用程序注册的 PowerShell DSC 模块?
- java - 在java中对多个NOT字段进行ORing
- php - 递归公式中的 PHP 正则表达式
- c# - 如何在 Visual Studio 2017 ASP.NET Core Web 应用程序中集成 Bootstrap 4?
- c# - 姓名分数测试