- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个自定义 ViewGroup
,里面有一些 View 。
为了响应事件,调用 requestLayout 并且在 OnLayout
中一些 View 将获取新的布局位置。
其中一个保持其位置但需要在内部重新排列。但是这个 View 的 onlayout 方法不会被调用,因为它的布局位置没有改变。尝试在此 View 中调用 requestLayout
、forceLayout
或 invalidate
不起作用。
我发现的唯一肮脏的技巧是改变它的一些值位置来强制改变布局,但我认为应该有更好的方法。所以,现在我做了一些(可怕的)事情,比如:
int patch = 0;
@Override protected void onLayout(boolean changed, int l, int t, int r, int b) {
...
_myView.patchedLayout(patch);
_myview.layout(l1, t1 , r1, t1+patch);
patch = (patch+1) % 2;
...
}
有什么方法可以以更好的方式获得相同的结果?
最佳答案
我终于找到了解决方案:我需要覆盖 onMeasure
并确保在我的 View 中调用 mesure
:
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
...
_myview.measure(widthMeasureSpec, heightMeasureSpec);
...
它将在 View 的私有(private)字段 mPrivateFlags 中设置 LAYOUT_REQUIRED 标志,因此它将强制调用 onLayout
关于android - 在尺寸不变的 subview 中强制 onLayout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11343500/
我开发了一个从 ViewGroup 扩展而来的自定义 View。这意味着我需要实现 onLayout 方法。我认为当 View 显示在屏幕上时会调用此方法,但我认为这是不对的。 你能解释一下 onLa
我有一个使用 onLayout 属性的组件。不过,我还想从父组件接收 prop 并执行给定的方法以及内部方法。 在我的组件中,我有 onLayout = event => { const { wi
我有这个 GUI: 线性布局 -TableLayout heading -ViewFlipper flipper - TableLayout1 - TableLayout2 -
在扩展 Android ViewGroup 类时,onLayout() 覆盖的目的是什么?我正在 Android 中制作自定义控件,但由于某种原因,内容(子 View 对象)没有显示。我的方法是扩展
我有我的自定义 View ,它将动态添加按钮控件。在我的 onLayout方法,我有一个类似下面的逻辑。 @Override protected void onLayout(boolean chang
我在循环中渲染项目,我需要获取每个项目的 Y 位置,以便我可以使用 scrollTo()稍后滚动到该位置。 问题是似乎onLayout没有正确调用所以我得到了错误的项目位置。 示例项目: A,B,C,
我编写了自己的布局(子类化 RelativeLayout)。我从调试器中看到 onMeasure() 和 onLayout() 被连续调用。这是正常行为吗?堆栈跟踪从 dispatchMessage(
我有一个自定义线性布局,它在其 onLayout() 函数中对每个子项调用 layout()。我的自定义子项(从 MapView 扩展)在其 onLayout() 函数中接收的数字与我在布局函数中传递
我正在做一个非常简单的功能,比如在 TextView 的末尾添加省略号。 我可以在 onMeasure()、onLayout() 和 OnGlobalLayoutListener() 调用中添加该功能
我有一个扩展 LinearLayout 的自定义 View 。这个自定义 View 包含其他几个 View ,它们的布局应该与 LinearLayout 完全一样,但是,我没有设法正确地布局它们……所
我需要一个带有固定标题的可滚动表格,所以我遵循了 this great blog一切都很好。 想法是使用一个表作为标题,一个表用于在 ScrollView 中添加的内容,它们都在一个自定义的 Line
在扩展 RelativeLayout 的自定义布局中覆盖 onLayout 方法的正确方法是什么?我试图将所有 View 放在一个表格中。这个想法是用 ImageViews 填充一行直到它填满,然后在
我有一个自定义 ViewGroup,里面有一些 View 。 为了响应事件,调用 requestLayout 并且在 OnLayout 中一些 View 将获取新的布局位置。 其中一个保持其位置但需要
我对图像中的 onLayout 有疑问: 我有一个显示维度的函数。 measureView(event) { console.log(event.nativeEvent.layout.width
我遇到了这个问题:我有一个自定义 View 组来处理我在其上渲染相机预览的表面 View 。在 onLayout 方法中,我调整了这个 surfaceView 的大小以正确显示相机。 此自定义 Vie
我有一个从 View 组类扩展而来的类。现在我知道在 onLayout 中你必须调用每个 child 的布局方法。这里的问题是应该将哪些值传递给子布局。 在我看来,我膨胀了一个 xml 并将其附加到此
我正在创建自定义 ViewGroup。我确实需要一个在另一个之上的 2 FrameLayout;留在底部的一个必须为 20dp,而另一个必须覆盖 View 的其余部分。 测量 @Override pr
我有课 public class FancyView extends View implements View.OnTouchListener { 我需要获取 View 的高度/宽度。 (它可能会随着
我注意到在处理来自 Activity 的配置更改时,onLayout 和 onSizeChanged 在方向更改后立即连续调用 两次,从横向->纵向或从纵向->横向.此外,第一个 onLayout/o
是否可以在其子项之一的 onLayout 事件期间向布局添加 View ? 即 FrameLayout 包含View,在View.onLayout() 中我想将 View 添加到父FrameLayou
我是一名优秀的程序员,十分优秀!