Skip to content

我的下边的弹出框和点击的不挨着,怎么和你的例子显示的不一样?该怎么解决啊? #21

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
iamdurui opened this issue Dec 13, 2016 · 16 comments
Assignees

Comments

@iamdurui
Copy link

f3336db7a8bdcbe1f7f643d4f584ce6d
这个该怎么解决啊?谢谢

@sohobloo
Copy link
Owner

@iamdurui
我刚在Android模拟器上测试了一下没能重现你的问题。
请问你用的控件版本和RN版本分别是多少呢?
再请问你的是否有修改过example中的样式?比如增加了padding、margin值等?
如果你用的v0.4.0控件,可以试试通过adjustFrame方法自行调整显示位置,在readme中有描述使用方法。

@iamdurui
Copy link
Author

你好,没有任何修改,控件版本是0.40,RN版本是0.34.1

@sohobloo
Copy link
Owner

sohobloo commented Dec 13, 2016

@iamdurui
我刚研究了一下Android的一些情况
你试试下面的方法:
image

大概原因是Button中<Text>的高度不正确导致dropdown的位置不正确。

@iamdurui
Copy link
Author

iamdurui commented Dec 13, 2016

你好,我试了你的方法了,还是不行,你看我的代码和界面
xj 5 h0qfz280k jr0 q n

adf54c5dc21ec6a16bf22f15d06e9dfa

@iamdurui
Copy link
Author

iamdurui commented Dec 13, 2016

我用三个手机试验了,都是有这种情况,其中也有2k手机,我能想到的用dropdownStyle里面写个marginTop:-40,只是能缓解点还不能完全靠拢,你的RN版本是多少?要不我升一下可以吗?

@iamdurui
Copy link
Author

你好,我升级到了0.35.0也是一样的效果,希望给出合理的解决办法

@sohobloo
Copy link
Owner

@iamdurui
如果第一个也出现这个问题,确实有些奇怪,我明天会用低版本的RN试试看。
我这边用的RN版本是0.36.0

另外因为位置计算是直接使用的RN里NativeModules中的measure方法返回button对应当前window的位置计算,所以如果这个值返回的不准确(原因无法预知)可能会导致位置计算都不正确。

鉴于此0.4.0版本我加上了adjustFrame方法,这个方法会传给你控件计算的frame,如果你这边显示不正确可以使用这个方法自行调整frame中的一些属性再通过这个方法返回值返回就可以了。

如果能找出实际导致你出现的状况的原因我会跟进解决,抱歉哦。

@iamdurui
Copy link
Author

没事,你用的这个方法和我找到的解决办法一样的意思,这个组件挺不错的,谢谢

@williamlk
Copy link

我也是遇到同样的问题,下拉菜单跟按钮靠不拢,只能在dropdownStyle中设置marginTop: -10才能靠拢,希望@sohobloo 能查查原因

@sohobloo
Copy link
Owner

sohobloo commented Jan 4, 2017

@williamlk
十分抱歉可能我的demo场景比较简单,没能复现这种情况,如果可以的话能否将可以复现的sample发我,感谢!

@williamlk
Copy link

`<ModalDropdown
options= {this.state.modalDropDownOptions}
style = {styles.modaldropdownstyle}
textStyle = {styles.modaldropdowntextstyle}
dropdownStyle = {styles.modaldropdownlistviewstyle}
renderRow = {this._renderRow}
onSelect = {(idx, value) => this._modalDropDowmSelected(idx, value)}>

                            <View style={styles.modaldropdowminnerview}>
                                <Text style={styles.modaldropdowminnertext}>{this.state.selectedRowText}</Text>
                                <Image style={styles.innerimage} source={Images.AsmDropDownImage} resizeMode={Image.resizeMode.contain} />
                            </View>
                        </ModalDropdown>

.....

modaldropdownstyle: {
flexDirection: 'row',
alignItems: 'center',
height: 40,
width: WINDOW_HEIGHT > WINDOW_WIDTH ? (WINDOW_WIDTH - 40) / 2 : (WINDOW_HEIGHT - 40) / 2,
padding: 8,
},
modaldropdowntextstyle: {
fontSize: 16,
},
modaldropdownlistviewstyle: {
//marginTop: -10,
width: WINDOW_HEIGHT > WINDOW_WIDTH ? (WINDOW_WIDTH - 40) / 2 - 16 : (WINDOW_WIDTH - 40) / 2 - 16,
height: 122
},
modaldropdowminnerview: {
flexDirection: 'row',
justifyContent: 'space-between',
alignItems: 'center',
width: WINDOW_HEIGHT > WINDOW_WIDTH ? (WINDOW_WIDTH - 40) / 2 - 16 : (WINDOW_WIDTH - 40) / 2 - 16,
},
innerimage: {
width: 20,
height: 20,
},
modaldropdowminnertext: {
fontSize: 16,
},`

@sohobloo
0106_2
可以看到确实是有大概10px的距离,但是有点奇怪的是有时候重新run的时候是没有这个问题的,希望作者给个意见。

@sohobloo
Copy link
Owner

sohobloo commented Jan 6, 2017

@williamlk 抱歉这两天有点忙碌,我会再试试Android的场景。
目前样式问题比较集中在RN版本升级到0.36之后的Android平台,因为此版本有个关于Flex布局的重大变更,我以为只是我的demo中样式有点小问题,看到您实际项目中的截图也有此问题,深表抱歉!
我会尽快跟进。

@sohobloo sohobloo self-assigned this Jan 6, 2017
@sohobloo sohobloo added the bug label Jan 6, 2017
@sohobloo sohobloo added this to the v0.4.1 milestone Jan 6, 2017
@void117
Copy link

void117 commented Jan 18, 2017

我也遇到了一样的问题,版本是0.35的

@sohobloo
Copy link
Owner

sohobloo commented Mar 4, 2017

如果各位还在关注这个问题,我已经知道了引起的原因,这个高度正式安卓的StatusBar的高度
解决方法可能是传递自定义样式的时候减去StatusBar的高度,这个高度是22,也可以取RN提供的StatusBar.currentHeight(更好)

因为并不是所有时候都会出现这个空隙,目前我还不知道如何判断何时需要减去这个数值,所以也不知道如何修改比较合适,如果大家有经验还请不吝赐教!

@sohobloo sohobloo removed this from the v0.4.1 milestone Mar 4, 2017
@MuLodMan
Copy link

亲,我觉得你不用吧计算那么多,你要修改一下api,允许用户传递父元素,然后你在内部计算一下父元素的绝对位置,然后计算差值,问题应该就可以解决了。

@wfs3006
Copy link

wfs3006 commented Dec 23, 2019

@sohobloo 如果Dimensions.get('window').height/Dimensions.get('window').width > 1.8的话就需要加上StatusBar的高度,否则不加,这是我的实践结果。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants