如何在 React Native Android 中设置按钮的高度

Posted

技术标签:

【中文标题】如何在 React Native Android 中设置按钮的高度【英文标题】:How to set the height of button in React Native Android 【发布时间】:2017-06-06 06:46:56 【问题描述】:

我正在学习针对 android 移动应用的 React Native 编程。我正在制作一个屏幕,我需要设置button. 的高度我在view 中添加了button 并设置了使用样式的高度,但是按钮高度没有变化。

/**
 * LoginComponent of Myntra
 * https://github.com/facebook/react-native
 * @flow
 */

import React,  Component  from "react";
import  AppRegistry, Text, View, Button, TextInput  from "react-native";

class LoginComponent extends Component 
render() 
    return (
        <View style= flex: 1, flexDirection: "column", margin: 10 >
            <TextInput
                style=
                    height: 40,
                    borderColor: "gray",
                    borderWidth: 0.5
                
                placeholder="Email address"
                underlineColorAndroid="transparent"
            />

            <TextInput
                style=
                    height: 40,
                    borderColor: "gray",
                    borderWidth: 0.5
                
                placeholder="Password"
                secureTextEntry=true
                underlineColorAndroid="transparent"
            />

            <View style= height: 100, marginTop: 10 >
                <Button title="LOG IN" color="#2E8B57" />
            </View>
        </View>
    );
  


AppRegistry.registerComponent("Myntra", () => LoginComponent);

谁能帮我根据我的要求设置按钮的高度?

【问题讨论】:

【参考方案1】:

此组件的选项有限,因此您无法将其调整为固定的height

我建议你使用TouchableOpacity 组件来构建你自己的按钮,拥有自己的propertiesstyles

您可以像这样轻松地设置它的样式:

<TouchableOpacity style= height: 100, marginTop: 10 >
    <Text>My button</Text>
</TouchableOpacity>

【讨论】:

【参考方案2】:

您可以使用以下方法轻松设置按钮宽度为提到的宽度:

<View style=[ width: "90%", margin: 10, backgroundColor: "red" ]>
          <Button
            onPress=this.buttonClickListener
            title="Button Three"
            color="#FF3D00"
          />
        </View> 

【讨论】:

很好的答案,但 OP 专门询问设置高度 为此,我们需要使用css设计的height属性。 之所以使用TouchableOpacity组件,是因为很遗憾不能改变Button组件的高度。 我们可以使用下面的代码来改变按钮的宽度和高度:&lt;View style=[ width: "50%", height: "50%",margin: 10, backgroundColor: "red" ]&gt; &lt;Button onPress=this.buttonClickListener title="Button Three" color="#FF3D00" /&gt; &lt;/View&gt; 致@sumitkumarpradhan,我已经测试过:宽度有效,但高度无效。至少在设置 style=flex:1 时。将高度从 0% 设置为 100% 最终会得到一个相同高度的按钮。【参考方案3】:

最好的解决方案是使用 minHeight 或 maxHeight 而不是使用 Height const。

【讨论】:

【参考方案4】:
<View style=styles.btnContainer>
  <TouchableOpacity>
    <Button style=styles.btnSize>
      <Text>Change Address</Text>
    </Button>
  </TouchableOpacity>
  <TouchableOpacity>
    <Button style=styles.btnSize>
      <Text>Change Address</Text>
    </Button>
  </TouchableOpacity>
</View>

样式表代码sn-p

const styles = StyleSheet.create(
    btnContainer:
        flexDirection:"row",
        justifyContent:"space-between"
    ,
    btnSize:
        width:"100%"
    
)

【讨论】:

【参考方案5】:

我们经常想改变按钮的尺寸,默认情况下会扩展到父元素的整个宽度。虽然减小它的宽度不是问题——减小父级的宽度就足够了,但是改变高度已经是有问题的了。 Button 元素没有 style 属性,所以除了在 ios 上改变文字颜色和在 Android 上改变背景颜色,我们不能在里面设置太多。

要更好地控制按钮,最好使用 TouchableOpacity 或 TouchableNativeFeedback。

TouchableOpacity 函数组件示例 -

import React,  useState  from "react";
import  StyleSheet, Text, TouchableOpacity, View  from "react-native";

const App = () => 
  const [count, setCount] = useState(0);
  const onPress = () => setCount(prevCount => prevCount + 1);

  return (
    <View style=styles.container>
      <View style=styles.countContainer>
        <Text>Count: count</Text>
      </View>
      <TouchableOpacity
        style=styles.button
        onPress=onPress
      >
        <Text>Press Here</Text>
      </TouchableOpacity>
    </View>
  );
;

const styles = StyleSheet.create(
  container: 
    flex: 1,
    justifyContent: "center",
    paddingHorizontal: 10
  ,
  button: 
    alignItems: "center",
    backgroundColor: "#DDDDDD",
    padding: 10
  ,
  countContainer: 
    alignItems: "center",
    padding: 10
  
);

export default App;

【讨论】:

【参考方案6】:

组件 Button 支持最低级别的自定义,因此您必须使用其他组件。

您可以使用:Pressable 或 TouchableOpacity,

<Pressable onPress=onPressFunction style=styles.yourButtonStyle>
    <Text>I'm pressable!</Text>
</Pressable

const styles = StyleSheet.create(
  yourButtonStyle: 
   ...
  
);

Doc Button

【讨论】:

以上是关于如何在 React Native Android 中设置按钮的高度的主要内容,如果未能解决你的问题,请参考以下文章

如何禁用 Android 上的设备后退按钮(react-native)?

React Native Android原生模块开发实战|教程|心得|如何创建React Native Android原生模块

如何通过@react-native-community/slider 在android中创建垂直滑块?

在 react-native 中,我如何在 ios 和 android 的图像上添加水印

如何在 Android Studio 中手动链接 react-native-camera?

React Native - 如何在 React Native 应用程序中使用 WebView 显示我的网站通知(适用于 Android)