RemoteViews setLayoutParams?

9

我希望能远程将TextView的高度设置为WRAP_CONTENT

由于没有remoteviews.setLayoutParams(viewId, param)函数,我该如何操作呢?

我尝试了remoteviews.setInt.(viewId, "setHeight", -2),但这只会将TextView的高度设置为零...

谢谢!

1个回答

8

在创建RemoteViews时,将资源ID传递给构造函数,该构造函数的TextView设置为高度为wrap_content。请记住,当您发送更新时,您实际上正在重新绘制应用程序小部件,因此您可以使用布局文件来影响无法通过RemoteViews方法进行更改的内容。


@CommonsWare:wrap_content可以使用...几乎。如果TextView的内容不太大,那么它就很好用,但是我想将高度限制为25dp。也就是说,方程式应该是height <= 25dp,但我找不到测量或控制高度的方法。有什么办法可以做到这一点吗? - PeteH
@PeteH:你可以尝试用某些东西(例如FrameLayout)包装TextView,并将25dp(或更好的25sp)限制用于TextView本身的wrap_content。我对它是否符合您的要求持怀疑态度,但这值得快速测试。否则,我没有任何好的想法 - 你可以考虑在Stack Overflow上单独提问。 - CommonsWare
@CommonsWare:谢谢您的建议。我发现唯一有效的方法是计算字符数,并将其用作粗略指标,在文本过多无法适应时减小文本大小。 - PeteH
@CommonsWare 您有没有关于如何动态更改宽度/高度的想法?我希望用户选择元素的大小(这意味着设置一个整数而不是“wrap_content”),但为每个可能的尺寸创建布局没有意义。 - Barthy
我想让用户选择元素的大小 -- 如果您在元数据中指示您的应用程序小部件是可调整大小的,则用户可以通过其主屏幕调整应用程序小部件的大小(至少对于支持它的主屏幕实现)。然后,您只需要使用流体布局(例如match_parent)来占用您所获得的任何空间。如果这不是您的意思,您可能希望提出一个单独的Stack Overflow问题,在其中提供有关您情况的更多详细信息。 - CommonsWare
@CommonsWare 我发布了一个带有更多信息的问题。由于这也符合此处问题的标题,我添加了我的问题链接。 在HomeScreen小部件中以编程方式设置ImageView大小 - Barthy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接