grz*_*aks 5 layout android android-widget
我在appwidget上有一个Button,我需要从服务中以编程方式"启用"/"禁用".
第一个想法是打电话setBoolean(R.id.buttonid, "setClickable", false)禁用它,但显然你不能setClickable远程调用.
另一个想法是从中删除文本标签rv.setTextViewText(R.id.buttonid, ""),然后删除点击处理程序rv.setOnClickPendingIntent(R.id.buttonid, null).不幸的是,传递null给它导致NullPointerException了android.app.ActivityThread.handleServiceArgs
是否有其他方法以编程方式禁用/启用appwidget按钮?我可以打电话rv.setViewVisibility(R.id.buttonid, View.GONE)完全隐藏按钮而不是禁用它.然而,这将彻底打破整个小部件布局,我想避免它.
我现在使用的解决方案是隐藏按钮setViewVisibility并显示其他空白按钮,而不是像之前那样保持appwidget布局.
在创建RemoteViews实例时,您将提供布局.如果要禁用该按钮,请选择该按钮上的布局android:enabled="false".
或者,你可以使用setOnClickPendingIntent()和提供一个Intent不会去任何地方的东西(例如,一个Intent没人使用的动作的广播).
基本上我有同样的问题,但想完全编程,所以我们只是将布尔值传递给setBoolean()函数:
remoteViews.setBoolean(R.id.imageButton1, "setEnabled", false);
Run Code Online (Sandbox Code Playgroud)
别忘了告诉Android更新主屏幕:
RemoteViews remoteViews = new RemoteViews(context.getResources().getText(R.string.package_name).toString(), R.layout.your_layout);
ComponentName thisWidget = new ComponentName(context, Widget.class);
AppWidgetManager manager = AppWidgetManager.getInstance(context);
manager.updateAppWidget(thisWidget, remoteViews);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6984 次 |
| 最近记录: |