React Native 自定义圆角button的封装

React Native自定义圆角按钮
本文介绍如何在React Native中创建自定义圆角按钮组件。通过定义样式、属性类型和默认属性,实现了一个可复用且易于定制的按钮组件。

前段时间一直在做react native开发,一直在忙,也没时间写东西,这次就打算认真地写点东西了。
感觉react native开发就是要先写组件(component),然后用组件去组装页面。组件写好了,后续开发就简单多了。不多说了,下面介绍下自定义圆角Button的封装。

'use strict';

import React, {
   Component,
   PropTypes,
  } from 'react';

import {
  StyleSheet,
  PixelRatio,
  Text,
  View,
  TouchableHighlight,
  Platform,
} from 'react-native';

class RadiusBtn extends Component {

  static propTypes = {
    btnName: PropTypes.string,
    textStyle: Text.propTypes.style,
    btnStyle: TouchableHighlight.propTypes.style,
    underlayColor:       TouchableHighlight.propTypes.underlayColor,
  };

  static defaultProps = {
    btnName: 'Button',
    underlayColor: '#4169e1',
  };


  render() {
    return (
      <View style = {{
                    flexDirection: 'row',
                    justifyContent: 'center',
                    alignItems: 'center',}}>
          <TouchableHighlight
              underlayColor={this.props.underlayColor}
              activeOpacity={0.5}
              style={[styles.center, styles.btnDefaultStyle, this.props.btnStyle]}
              onPress={this.props.onPress}>
              <Text style={[styles.textDefaultStyle, this.props.textStyle]}>{this.props.btnName}</Text>
          </TouchableHighlight>
      </View>
    );
  }
}

const styles = StyleSheet.create({
  center: {
    justifyContent:'center',
    alignItems: 'center',
  },
  btnDefaultStyle: {
    width: 100,
    height: 20,
    backgroundColor: '#ff8447',
    borderColor: '#ff8447',
    borderRadius: 15,
    borderWidth: (Platform.OS==='ios' ? 1.0 : 1.5) / PixelRatio.get(),
  },
  textDefaultStyle: {
    fontSize: 16,
    color: '#ffffff',
  },
});

module.exports = RadiusBtn;

static propTypes = { }; 这个方法是对定义的属性的类型设置并检验传入的类型。

static defaultProps = {} ; 这个是设置一些组件的默认属性。

其他没什么说的了,比较简单,用法如下:

<RadiusButton
                btnName= 'btnName'
                textStyle= {{
                            fontSize: 16,
                            color: '#ffffff',
                          }}
                btnStyle= {{
                            width: 300,
                            height: 44,
                            borderRadius: 25,
                          }}
                underlayColor= '#4169e1'
                onPress={this._pressCreditClick} >
              </RadiusButton>

挺简单的吧!看完这个基本就可以做复杂控件了。

### React Native 中实现椭圆形 Button 样式的解决方案 在 React Native 中,可以通过自定义 `style` 属性来创建具有特定形状的按钮。为了实现椭圆形按钮样式,主要依赖于 CSS 的 `borderRadius` 属性,并将其设置为高度的一半以形成完美的圆角效果[^1]。 以下是具体的实现方式: #### 使用 TouchableOpacity 或 Pressable 创建椭圆形按钮 通过 `TouchableOpacity` 或更现代的 `Pressable` 组件,结合合适的样式属性,可以轻松构建椭圆形按钮。下面是一个完整的代码示例: ```javascript import React from 'react'; import { TouchableOpacity, Text, StyleSheet } from 'react-native'; const OvalButton = ({ onPress, title }) => { return ( <TouchableOpacity style={styles.button} onPress={onPress}> <Text style={styles.text}>{title}</Text> </TouchableOpacity> ); }; const styles = StyleSheet.create({ button: { backgroundColor: '#007BFF', // 设置背景颜色 paddingVertical: 10, // 垂直方向上的填充 paddingHorizontal: 20, // 水平方向上的填充 borderRadius: 30, // 边缘半径设为高度一半以达到椭圆效果 alignItems: 'center', justifyContent: 'center', }, text: { color: '#fff', // 文字颜色 fontSize: 16, fontWeight: 'bold', }, }); export default OvalButton; ``` 在此代码中,`borderRadius` 被设定为固定值 `30`,这取决于按钮的高度和宽度比例。如果希望动态适应不同尺寸,则可以根据容器大小计算出相应的 `borderRadius`[^1]。 #### 封装全局 Touchable 组件优化体验 对于项目中的多个按钮需求,建议封装一个通用的触控组件以便统一管理和维护。同时可加入防抖动逻辑减少重复触发事件的可能性[^3]。例如,在按下状态改变透明度的同时应用节流机制防止误操作。 另外,若需进一步扩展功能或提升视觉效果,可以从第三方库寻找灵感甚至直接引入成熟的方案,比如提到过的 react-native-android-kit 提供了一系列丰富的 Android 风格 UI 控件[^2]。 最后值得注意的是,除了基本交互外还应考虑无障碍访问等因素,确保所有用户都能良好使用该界面元素[^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值