- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
{"foo"} B代码 {con-6ren">
我有一个关于 onLayout 事件的问题
一个代码
<View>
<Text>
<Text onLayout={e => {console.log("this isn't triggered!")}}>{"foo"}</Text>
</Text>
</View>
<View>
<Text onLayout={e => {console.log("here the event it is called, but I need call in a SubText")}}>{"foo"}</Text>
</View>
最佳答案
这是后代的答案。在我找到答案之前,我已经通过了这里,所以也许这会对其他人有所帮助。
就我而言,我需要在 ScrollView 中显示属性文本,并能够滚动到文本中的不同子字符串。
Nesting texts within texts creates a single NSAttributedString behind the scenes on iOS and a SpannableString on Android ,因此尝试添加 onLayout
嵌套文本元素的 prop 实际上没有任何效果,因为它实际上并未在结果 DOM 中表示为它自己的文本元素。
在我的情况下,解决方案是 use the onTextLayout
prop of the Text component :
import React from "react"
import { StyleSheet, ScrollView, Text, View } from "react-native"
const App = () => {
const scrollViewRef = React.useRef<ScrollView>(null)
const onTextLayout = React.useCallback(event => {
const scrollLocation = event.nativeEvent.lines.find(
line => line.text === "6. Hello\n",
).y
if (scrollViewRef.current) {
scrollViewRef.current.scrollTo({
x: 0,
y: scrollLocation,
animated: true,
})
}
}, [])
return (
<View style={styles.container}>
<View style={{ height: 100 }}>
<ScrollView
ref={scrollViewRef}
style={{
width: 100,
height: 100,
borderColor: "#000",
borderWidth: 1,
}}
>
<Text onTextLayout={onTextLayout}>
<Text>1. Hello{"\n"}</Text>
<Text>2. Hello{"\n"}</Text>
<Text>3. Hello{"\n"}</Text>
<Text>4. Hello{"\n"}</Text>
<Text>5. Hello{"\n"}</Text>
<Text>6. Hello{"\n"}</Text>
<Text>7. Hello{"\n"}</Text>
<Text>8. Hello{"\n"}</Text>
<Text>9. Hello{"\n"}</Text>
<Text>10. Hello{"\n"}</Text>
<Text>10. Hello{"\n"}</Text>
<Text>10. Hello{"\n"}</Text>
<Text>10. Hello{"\n"}</Text>
</Text>
</ScrollView>
</View>
</View>
)
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: "#fff",
alignItems: "center",
justifyContent: "center",
},
})
export default App
作为旁注,我在使用
onTextLayout=
的行上遇到 Typescript 错误。支柱。谷歌搜索解决方案并没有发现任何问题,但调用了 prop 函数!
关于react-native - 为什么 onLayout 不在 SubText 中触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50934786/
我开发了一个从 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
我是一名优秀的程序员,十分优秀!