React native 为什么react native border radius可以在iOS上工作,而不能在Android图像上工作
创建了一个列表组件,它有一个图像、一些文本和一个按钮。 图像上有边框半径和边框颜色 问题: android上的彩色边框半径无法识别,但在iOS上效果很好 代码如下: 名单:React native 为什么react native border radius可以在iOS上工作,而不能在Android图像上工作,react-native,react-native-android,React Native,React Native Android,创建了一个列表组件,它有一个图像、一些文本和一个按钮。 图像上有边框半径和边框颜色 问题: android上的彩色边框半径无法识别,但在iOS上效果很好 代码如下: 名单: import React,{useState}来自“React”; 进口{ 看法 文本, 形象,, 样式表, 情态动词 平面列表, 尺寸, 可触摸不透明度, 无反馈可触摸 }从“反应本机”; 从'react native Svg'导入{Svg,Path,G,Line}; const{width}=Dimensions.get
import React,{useState}来自“React”;
进口{
看法
文本,
形象,,
样式表,
情态动词
平面列表,
尺寸,
可触摸不透明度,
无反馈可触摸
}从“反应本机”;
从'react native Svg'导入{Svg,Path,G,Line};
const{width}=Dimensions.get('window');
常量块列表=(道具)=>{
const onPress=(名称)=>{
警报(“解除阻止”+名称);
};
返回(
(
{item.name}
onPress(item.name)}style={styles.btn}>
解除封锁
)}
/>
);
};
const styles=StyleSheet.create({
itemContainer:{
flexDirection:'行',
宽度:宽度*0.95,
背景颜色:“#fff”,
边缘水平:宽度*0.025,
边缘底部:宽度*0.02,
边界半径:18,
justifyContent:'之间的空间',
对齐项目:“居中”,
填充垂直:宽度*0.02,
阴影颜色:'#333',
阴影偏移:{
宽度:3,
身高:3
},
阴影不透明度:0.5,
阴影半径:3,
立面图:5
},
img:{
边界半径:50,
边界宽度:2,
边框颜色:'#219F75',
高度:宽度*0.125,
宽度:宽度*0.125,
边缘水平:宽度*0.05
},
btn:{
边界半径:11,
背景颜色:“#219F75”,
填充:宽度*0.0275
},
左侧:{
flexDirection:'行',
对齐项目:“中心”
},
右侧:{
边缘光:宽度*0.05
}
});
导出默认阻止列表;
下面是它应该是什么样子(在iOS上正常工作):
以下是android上的外观(请注意方形绿色边框):
为什么会发生这种情况?如何获取边界半径?尝试img样式下的
borderRadius:width*0.125
。如果我们想要视图圆,我们还可以通过将borderRadius
设置为视图高度(宽度)的一半来实现
包含:均匀缩放图像(保持图像的纵横比),使图像的两个尺寸(宽度和高度)等于或小于视图的相应尺寸(减去填充)
当使用android的低分辨率设备时,您可以动态设置图像宽度高度,但边界半径静态值有时图像边界半径大于图像宽度,这就是为什么会出现这种情况
请动态设置所有属性。如果使用一半宽度的图像边框,效果会更好
borderRadius:(宽度*0.125)/2您可以尝试将resizeMode更改为“cover”您可以尝试添加溢出:“hidden”吗?刚刚添加,没有changes@Jim你能用一张带图片的卡片和我分享一份世博会点心吗?@Jim,当我删除resizeMode时,它工作正常,没有变化。同样没有变化。我认为这与价值无关borderRadius@Jim,尝试设置使用应计数字的高度和宽度进行测试。当通过将边界半径设置为视图高度的一半来创建圆形视图时。ios显示的大小可能恰好相等。您可以查看此回答链接[有关某些详细信息,borderRadius值更改不会影响所需的输出,因为您设置了图像大小调整模式。该模式具有缩放功能。尝试在视图中创建图像请阅读注释:borderRadius值更改不会影响所需的结果
import React, { useState } from 'react';
import {
View,
Text,
Image,
StyleSheet,
Modal,
FlatList,
Dimensions,
TouchableOpacity,
TouchableWithoutFeedback
} from 'react-native';
import { Svg, Path, G, Line } from 'react-native-svg';
const { width } = Dimensions.get('window');
const BlockList = (props) => {
const onPress = (name) => {
alert('Unblocking ' + name);
};
return (
<FlatList
style={styles.container}
data={props.data}
renderItem={({ item, index }) => (
<View style={styles.itemContainer}>
<View style={styles.leftSide}>
<Image source={item.img} style={styles.img} resizeMode={'contain'} />
<Text style={{ fontSize: 18, fontWeight: 'bold', color: '#454A66' }}>{item.name}</Text>
</View>
<View style={styles.rightSide}>
<TouchableOpacity onPress={() => onPress(item.name)} style={styles.btn}>
<Text style={{ fontWeight: 'bold', color: '#fff' }}>Unblock</Text>
</TouchableOpacity>
</View>
</View>
)}
/>
);
};
const styles = StyleSheet.create({
itemContainer: {
flexDirection: 'row',
width: width * 0.95,
backgroundColor: '#fff',
marginHorizontal: width * 0.025,
marginBottom: width * 0.02,
borderRadius: 18,
justifyContent: 'space-between',
alignItems: 'center',
paddingVertical: width * 0.02,
shadowColor: '#333',
shadowOffset: {
width: 3,
height: 3
},
shadowOpacity: 0.5,
shadowRadius: 3,
elevation: 5
},
img: {
borderRadius: 50,
borderWidth: 2,
borderColor: '#219F75',
height: width * 0.125,
width: width * 0.125,
marginHorizontal: width * 0.05
},
btn: {
borderRadius: 11,
backgroundColor: '#219F75',
padding: width * 0.0275
},
leftSide: {
flexDirection: 'row',
alignItems: 'center'
},
rightSide: {
marginRight: width * 0.05
}
});
export default BlockList;
<View
style={{
borderWidth:1,
borderColor:'rgba(0,0,0,0.2)',
alignItems:'center',
justifyContent:'center',
width:100,
height:100,
backgroundColor:'#fff',
borderRadius:50,
}}
/>
<View style={styles.leftSide}>
<Image source={item.img} style={styles.img}/>
<Text style={{ fontSize: 18, fontWeight: 'bold', color: '#454A66' }}>{item.name}</Text>
</View>
img: {
borderRadius: width * 0.125*0.5,
borderWidth: 2,
borderColor: '#219F75',
height: width * 0.125,
width: width * 0.125,
marginHorizontal: width * 0.05
},