Android RemoteView上支持的方法

Android RemoteView上支持的方法,android,Android,我正在尝试将值转发到Android RemoteView。一些值可以通过使用反射的set方法转发。例如背景色: rv.setInt(R.id.viewId, "setBackgroundColor", 0xffff0000); 尽管这种机制对于单参数方法调用看起来非常通用,但对于某些方法却不起作用。例如,在视图上设置alpha不起作用(在api级别15上运行): 框架在运行时抱怨不支持setAlpha(float)。有人知道为什么会这样吗?远程视图上支持的方法的规则是什么?为什么阿尔法不在其中

我正在尝试将值转发到Android RemoteView。一些值可以通过使用反射的set方法转发。例如背景色:

rv.setInt(R.id.viewId, "setBackgroundColor", 0xffff0000);
尽管这种机制对于单参数方法调用看起来非常通用,但对于某些方法却不起作用。例如,在视图上设置alpha不起作用(在api级别15上运行):

框架在运行时抱怨不支持setAlpha(float)。有人知道为什么会这样吗?远程视图上支持的方法的规则是什么?为什么阿尔法不在其中

更新:

来自Commonware的答案是正确的。经过更多的研究,ImageView.setAlpha(int)是远程的,这对一些人来说可能很有趣。它只在图像上设置alpha,因此不适用于ninepatches等,但对某些情况可能有用

有人知道为什么会这样吗?远程视图上支持的方法的规则是什么

setBackgroundColor()
具有
@RemotableViewMethod
注释
setAlpha()
没有

为什么阿尔法不在其中


这可能是从具体的技术原因到简单的疏忽。欢迎您提交一个功能请求,以便在将来的Android版本中添加该注释,或者实施该注释并提交补丁。

关于setAlpha(int)的好技巧。在ImageView中放置可绘制视图很容易。在我的例子中,我有一个在ImageView(ImageView的src)中包含XML形状的drawable,并且使用int 0-255设置alpha是可行的。这可能也适用于ninepatches,尽管我还没有尝试过。从setInt/setDouble/setFloat一次调用可以调用哪些方法?我正在尝试更改为视图的translationX。我认为这可能是一个解决方案:@summers:它们没有文档记录,因此会因Android版本而异。您必须搜索框架代码以查看其上有哪些
@RemotableViewMethod
。您知道是否存在任何setX/translationX方法吗?@summers:基于,这两种方法都没有
@RemotableViewMethod
。如果他们想添加这些内容,我会有点惊讶,因为这可能会导致您的视图超出为您的应用程序小部件指定的区域/
通知
/无论是什么内容,都会被承载视图的内容所覆盖。@summers:将布局资源作为参数。传入一个布局资源,该资源具有所需的填充/边距,用于不同的填充/边距组合。这可能需要您拥有数百或数千个布局资源。“我该怎么做?”--
rv.setFloat(R.id.viewId, "setAlpha", 0.5f);