当前位置: 首页 > 知识库问答 >
问题:

react 本机上的按钮文本始终为大写

陆博易
2023-03-14

我在react-native上创建了一个组件,但是按钮的文本总是大写,有人知道为什么它不接受传递的文本,因为我想显示' Login ',但是它显示' LOGIN '

js prettyprint-override">import React, { Component } from 'react';
import { View, Button} from 'react-native';
import LabelApp from "../../config/labels.app";

const labelApp = LabelApp.loginView;

export default class Login extends Component {

  constructor(props){
    super(props);
    this.handleClickBtnEnter = this.makeLogin.bind(this);
  }

  makeLogin() {

  }

  render() {
    return (
     <View>
       <Button title= {labelApp.textButtonLogin} onPress={this.handleClickBtnEnter}/>
     </View>
    );
  }
}

组件标签

const LabelApp = {
    loginView: {
        textButtonLogin: 'Ingresar',
    },
}
export default LabelApp;

可视化

共有3个答案

谷梁宜
2023-03-14

来自官方文件

一个基本的按钮组件,应该在任何平台上呈现良好。支持最低级别的自定义。

推荐使用可触摸的不透明度或可触摸的本机反馈

https://facebook.github.io/react-native/docs/touchableopacity

下面我添加了textTransform:“小写”,作为按钮的样式规则,以覆盖任何继承的文本大小写。

import React, { Component } from 'react'
import {
  StyleSheet,
  TouchableOpacity,
  Text,
  View,
} from 'react-native'

export default class App extends Component {
  constructor(props) {
    super(props)
    this.state = { count: 0 }
  }

  onPress = () => {
    this.setState({
      count: this.state.count+1
    })
  }

 render() {
   return (
     <View style={styles.container}>
       <TouchableOpacity
         style={styles.button}
         onPress={this.onPress}
       >
         <Text> Touch Here </Text>
       </TouchableOpacity>
       <View style={[styles.countContainer]}>
         <Text style={[styles.countText]}>
            { this.state.count !== 0 ? this.state.count: null}
          </Text>
        </View>
      </View>
    )
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    paddingHorizontal: 10
  },
  button: {
    alignItems: 'center',
    backgroundColor: '#DDDDDD',
    padding: 10,
    textTransform: 'lowercase', // Notice this updates the default style
  },
  countContainer: {
    alignItems: 'center',
    padding: 10
  },
  countText: {
    color: '#FF00FF'
  }
})

https://snack.expo.io/Bko_W_gx8

公良子轩
2023-03-14

所以,另外两个答案是正确的,你应该使用TouchableOpacity,但作为一个刚刚接触Native的人,我花了一段时间才明白这里发生了什么。希望这个解释能提供更多的背景信息。

内置按钮组件有时似乎存在一些奇怪的兼容性/可见性问题,其中之一就是将标题属性文本全部大写。当在Chrome中查看按钮组件的文档时,预览显示所有文本在“Web”视图下大写,但不是Android或iOS(我在Android设备上使用Expo和Metro Bundler时遇到了这个问题,所以不确定该怎么做)。我在Button文档中找不到任何关于大写/大写的信息,所以这可能是一个bug。

解决方案是使用一个名为TouchableOpacy的不同组件。它还有一个您可以使用的onPress事件和一个内置的触摸动画,但它的开箱即用样式不如Button组件。文档中需要注意的重要一点是:“不透明度是通过将子级包装在Animated.View中来控制的,该子级被添加到视图层次结构中。请注意,这可能会影响布局。”它没有标题道具,因此您只需将按钮文本放入Text组件中,如下所示:

<Button 
  title='text will be capitalized' 
  onPress={onPress}
/>

成为

<TouchableOpacity onPress={onPress}>
  <Text>text will stay lowercase</Text>
</TouchableOpacity>

我和OP有同样的问题,这个解决了我的问题。

路昆杰
2023-03-14

对于 react Native Paper 按钮,请使用 uppercase={false} prop:

<Button
      mode="outlined"
      uppercase={false}
      accessibilityLabel="label for screen readers"
      style={styles.yourButtonStyle}>Button label</Button>
 类似资料:
  • !define MUI_PAGE_CUSTOMFUNCTION_SHOW "CompShowProc" !insertmacro MUI_PAGE_COMPONENTS ;组件选择页面 Function "CompShowProc" GetDlgItem $R0 $HWNDPARENT 1 SendMessage $R0 ${WM_SETTEXT} 0 `STR:小黑` ;下一步按键

  • 用这条线 第一行确实是红色的,第二行是蓝色的,但我不能控制任何一个文本行的字体大小,这是什么?我怎么做?

  • 问题内容: 我正在尝试使用ng-disabled有条件地启用/禁用“保存”按钮: 我有一个$ scope.data.modified变量,当我的数据被修改后该变量变为true。无论是对还是错,都将启用“保存”按钮。元素检查显示,禁用ng的值按预期在“ true”和“ false”之间切换,但该按钮始终处于启用状态。 问题答案: 当您使用角度js属性(例如ng-show,ng-hide,ng-dis

  • 我也尝试过使用KeyboardShouldPersistTaps=Handled,但我仍然必须在自定义按钮上点击两次才能执行一个操作。谁能告诉我,我在代码中做错了什么? 谢了。

  • 我试图做一个简单的菜单游戏pyplay,但我正在努力显示菜单按钮的交互式文本。我有一个非常简单的菜单,有“开始”和“退出”选项,我试图用我制作的按钮类来显示它们。 由于某种原因,按钮背景会闪烁,但文本不会出现。我得到了一堆矩形,当我滚动它们时,它们会正确地改变颜色,但没有文本。 我看了类似的问题,但似乎不明白为什么我的问题不起作用。任何帮助或指导都将不胜感激。 下面是一个代码示例。颜色在单独的py