React-Native Button样式不起作用


74

Import_this

import {AppRegistry, Text, View, Button, StyleSheet} from 'react-native';

这是我的React Button代码,但是样式无法正常运行...

<Button
  onPress={this.onPress.bind(this)} 
  title={"Go Back"}
  style={{color: 'red', marginTop: 10, padding: 10}}
/>

我也尝试过此代码

<Button 
       containerStyle={{padding:10, height:45, overflow:'hidden', 
       borderRadius:4, backgroundColor: 'white'}}
       style={{fontSize: 20, color: 'green'}} 
       onPress={this.onPress.bind(this)} title={"Go Back"}
      > Press me!
</Button>

更新问题:

我也尝试过这种方式..

<Button
    onPress={this.onPress.bind(this)}
    title={"Go Back"}
    style={styles.buttonStyle}
>ku ka</Button>

风格

const styles = StyleSheet.create({
    buttonStyle: {
        color: 'red',
        marginTop: 20,
        padding: 20,
        backgroundColor: 'green'
    }
});

但没有投入:我手机的屏幕截图:- 我的手机屏幕截图:-


Button您使用自定义组件还是React按钮组件?
Sagar Khatri

1
可能会做出反应
-JavaScript学习者

1
它没有style财产。请检查一次。
Sagar Khatri

Answers:


108

阵营本土按钮在你能做什么非常有限的,看见了; 纽扣

它没有样式道具,并且您没有<Button>txt</Button>通过title属性设置“ web-way”文本<Button title="txt" />

如果要对外观进行更多控制,则应使用诸如TouchableOpacity之类的TouchableXXXX'组件之一, 它们真的很容易使用:-)


11
一个带有TouchableOpacity的有效示例将是一个很好的例子。
mayid

2
嗨..你能解释一下为什么按钮没有风格道具吗?
Tunvir Rahman Tusher

来自文档:“如果此按钮不适合您的应用程序,则可以使用TouchableOpacityTouchableNativeFeedback构建自己的按钮。作为灵感,请查看此按钮组件源代码。或者,请看一下各种各样的按钮由社区构建的按钮组件。”
安德烈·菲格雷多

33

我有一个关于边距和填充的问题Button。我在View组件内部添加了Button并将您的属性应用于View

<View style={{margin:10}}>
<Button
  title="Decrypt Data"
  color="orange"
  accessibilityLabel="Tap to Decrypt Data"
  onPress={() => {
    Alert.alert('You tapped the Decrypt button!');
  }}
  />  
</View>

它在某些情况下有效,例如添加“盒子阴影”,然后创建自己的按钮就太过分了。可悲的是要走的路是创建自己的按钮,如果一个想要的风格按钮本身,如尺寸,填充,文本外观,等等
安德烈·菲格雷多

11

如果您不想创建自己的按钮组件,那么一种快速而又肮脏的解决方案是将按钮包装在视图中,这至少允许您应用布局样式。

例如,这将创建一行按钮:

<View style={{flexDirection: 'row'}}>
    <View style={{flex:1 , marginRight:10}} >
        <Button title="Save" onPress={() => {}}></Button>
    </View>
    <View style={{flex:1}} >
        <Button title="Cancel" onPress={() => {}}></Button>
    </View>
</View>

11

React Native按钮提供的选项非常有限。您可以通过设置这些元素的样式并像这样包装按钮来使用TouchableHighlight或TouchableOpacity

             <TouchableHighlight 
                style ={{
                    height: 40,
                    width:160,
                    borderRadius:10,
                    backgroundColor : "yellow",
                    marginLeft :50,
                    marginRight:50,
                    marginTop :20
                }}>
            <Button onPress={this._onPressButton}            
            title="SAVE"
            accessibilityLabel="Learn more about this button"
          /> 
          </TouchableHighlight> 

您还可以将react库用于自定义按钮。一个不错的库是react-native-button(https://www.npmjs.com/package/react-native-button


8

而不是使用button。您可以在本机反应中使用文本,然后使其可触摸

<TouchableOpacity onPress={this._onPressButton}> 
   <Text style = {'your custome style'}>
       button name
   </Text>
</TouchableOpacity >

3

仅学习自己,但包装在View中可以使您在按钮周围添加样式。

const Stack = StackNavigator({
  Home: {
    screen: HomeView,
    navigationOptions: {
      title: 'Home View'
    }
  },
  CoolView: {
    screen: CoolView,
    navigationOptions: ({navigation}) => ({
      title: 'Cool View',
      headerRight: (<View style={{marginRight: 16}}><Button
        title="Cool"
        onPress={() => alert('cool')}
      /></View>
    )
    })
  }
})

2

试试这个

<TouchableOpacity onPress={() => this._onPressAppoimentButton()} style={styles.Btn}>
    <Button title="Order Online" style={styles.Btn} > </Button>
</TouchableOpacity>


-1

我知道这是坏事发布,但是我发现了一种真正简单的方法,只需在按钮本身上添加margin-top和margin-bottom,而无需构建其他任何东西。

创建样式时,无论是内联样式还是通过创建要传递的对象,都可以执行以下操作:

var buttonStyle = {
   marginTop: "1px",
   marginBottom: "1px"
}

似乎在值周围加上引号使它起作用。我不知道这是否是因为它是React的较新版本,而不是两年前发布的版本,但是我知道它现在可以工作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.