Android RemoteViews,如何在窗口小部件中设置ImageView的ScaleType?

use*_*443 40 android widget imageview

我正在开发一个带有图像的小部件,可以在一个设置屏幕中由用户选择.然后可以使用ImageView.setScaleType("CENTER")从用户设置图像.这样可行.然后,图像的URL作为URL存储在首选项中,也作为Bitmap的Base64编码字符串存储(因为我想缩小图像,用户可以在设置中旋转它)

在小部件中,我加载图像.这很好.使用URI和Bitmap也是如此.ImageView的ScaleType也设置为布局中的固定值,也适用.

但是如何以编程方式在窗口小部件中定义ImageView的ScaleType?原因我想将ScaleType设置为值,用户已在设置中选择.使用RemoteViews,我们无法获得ImageView ...

我试过了:


myRemoteViews.setString(R.id.myImage,"setScaleType","CENTER");


日志文件说:ImageView无法使用函数setScaleType.

有人知道如何在AppWidget中进行此定义吗?

小智 55

您可以使用此段以编程方式设置图像视图的比例类型.

 imgview.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你...

  • 这是如何设置普通`ImageView`的缩放类型,但提问者在`RemoteViews`中询问. (13认同)

Dan*_*lme 9

如果查看源代码ImageView,可以看到setScaleType方法缺少@android.view.RemotableViewMethod注释,因此无法通过RemoteViews接口调用.

这个限制有一个解决方法,但它并不漂亮:为您想要的每个ScaleType定义不同的布局XML,并在创建之前选择它们RemoteViews.如果您的布局很复杂,或者您有多个视图要应用此变通方法,则可能需要使用在主布局中RemoteViews.addView添加特定ImageView布局.

addView在我的应用程序Showr中使用此解决方法(with )用于appwidgets .这种方法的问题在于库存启动器有一个错误:如果你通过创建一个新的并通过调用添加不同的布局来改变现有appwidget的比例类型,它并不总是意识到布局已经改变.RemoteViewsaddViewImageView

  • 您不能在"RemoteViews"中使用自己的类,只能在系统中内置. (2认同)