我有两个相互重叠的视图,其中一个视图作为其他视图的主视图。我正在翻译所有捏合和平移以缩放并调整主视图。
现在我想将这些信息发送给奴隶(android.view.View
的子类)。据说其他观点没有回应这个维度。我试过以下方法
ViewGroup.LayoutParams params = this.getLayoutParams();
params.height = height;
params.width = width;
this.setLayoutParams(params);this.requestLayout();
setMeasuredDimension(width, height);
this.setMinimumHeight(height);
this.setMinimumWidth(width)
这些似乎都不起作用。
使用onTouchEvent我调整TextureView
的大小并将其发送到另一个View对象。获取有关大小更改的信息(大多数情况下大于父级维度(和屏幕大小))另一个视图也应增加/更改其大小。
子类视图不会增长到提供给它的维度。此外,增加仅限于父级大小(在我的情况下,其宽度:1080高度:1776),而它可以超过使用
textureView.setMinimumWidth(newWidth);
textureView.setMinimumHeight(newHeight);
关于可能出现什么问题或者在两个视图中更改布局/维度的可靠方式的任何想法?
答案 0 :(得分:1)
setLayoutParams
=>这将是在其父级中定位View的规范方法。setMeasuredDimension
=>这是从View.onMeasure
使用来告诉布局系统您的特定View想要的大小。仅在您实现自己的View子类时使用。setMinimumWidth/setMinimumHeight
=>告诉默认的View实现View应具有的最小大小。如果您自己实施View.onMeasure
,则不需要这样做。总而言之,如果您坚持使用标准的Android框架组件,setLayoutParams
应该是值得关注的地方。
答案 1 :(得分:0)
如果使用正确,并且在适当的情况下,您列出的方法都是设置尺寸的有效方法。
如果没有进一步的信息,这很难解决。
它以什么方式起作用?是导致崩溃,还是视图大小不符合您的预期?
该代码段中的代码段在哪里?我猜它是自己的一个自定义类的一部分,它扩展了ViewGroup,但是由于你是stackoverflow的新手,我们不知道你的编程经验水平。它可能在完全错误的地方,this
完全引用其他一些对象。
我可以建议您检查一件事:
你提到你的slave是android.view.View
的子类,但这本身并不足以使用ViewGroup.LayoutParams。您需要确保您的奴隶是android.view.ViewGroup
的直接或间接子类。
提供更多关于您所观察事物的代码和信息,我们会尽力为您提供帮助。
更新:
好的,所以这是一个你试图调整大小的TextureView。
我建议你在设置它的高度和宽度后检查TextureView
的报告大小。您可以使用断点并运行调试,或者使用myTextureView.getWidth()
和.getHeight()
,并使用Log
个参数将它们输出到LogCat。
您还可以查看与SurfaceTexture
相关联的TextureView
的尺寸。在SurfaceTextureListener
上设置TextureView
。触发此侦听器时,onSurfaceTextureAvailable()
将提供SurfaceTexture
的宽度和高度。
我建议您这样做,因为您可能会发现 能够更改TextureView
的大小,但它是{{内容的{{>>内容 1}}这不会改变大小。在这种情况下,您可以覆盖TextureView
来定义必要的转换,以便在旧尺寸和新尺寸之间扩展内容。