ToolBarAndroid no representa en ReactNative
Estoy intentando conseguir una barra de herramientas básica de Android para hacerla en mi vista nativa de React y estoy teniendo problemas. Con mi código actual, se ejecuta muy bien (sin errores o nada), pero la barra de herramientas no está allí. ¿Alguna sugerencia sobre lo que estoy haciendo mal? ¡Gracias por adelantado!
'use strict'; const React = require('react-native'); const MaterialKit = require('react-native-material-kit'); const { AppRegistry, DrawerLayoutAndroid, StyleSheet, Text, View, ToolbarAndroid, } = React; const DRAWER_REF = 'drawer'; const OpenLightApp = React.createClass({ render: function() { const navigationView = ( <View style={{flex: 1, backgroundColor: '#88D8EC'}}> <Text style={{margin: 10, fontSize: 15, textAlign: 'left'}}>Drawer Item</Text> </View> ); return ( <DrawerLayoutAndroid drawerWidth={300} ref={DRAWER_REF} drawerPosition={DrawerLayoutAndroid.positions.Left} renderNavigationView={() => navigationView}> <View style={styles.container}> <ToolbarAndroid navIcon={require('image!hamburger')} title="OpenLight" titleColor="black" style={styles.toolbar} onIconClicked={() => this.refs[DRAWER_REF].openDrawer()} /> <Text style={styles.welcome}> Example Text </Text> <Text style={styles.instructions}> To get started, edit index.android.js </Text> <Text style={styles.instructions}> Shake or press menu button for dev menu </Text> </View> </DrawerLayoutAndroid> ); } }); const styles = StyleSheet.create({ container: { flex: 1, justifyContent: 'center', alignItems: 'center', backgroundColor: '#F5FCFF', }, welcome: { fontSize: 20, textAlign: 'center', margin: 10, }, instructions: { textAlign: 'center', color: '#333333', marginBottom: 5, }, toolbar: { backgroundColor: '#00a2ed', height: 56, }, }); AppRegistry.registerComponent('OpenLightApp', () => OpenLightApp);
- ¿Cuál es el equivalente de ActionSheetIOS en Android?
- No se puede instalar firmado apk de React Native
- Proyecto de la biblioteca de Android con React Native
- React-Native build failed - no se pudo instalar todo
- Cómo entender el "ReactContext" en "Enviar eventos a Javascript" en React Native
- WebStorm reactiva-depuración nativa no funciona
- "Reaccionar-nativo run-android" - BUILD es SUCCESSFUL pero obtener error tipo 3 Error: clase de actividad MainActivity no existe
- Running React Proyectos nativos presentes en github en dispositivos Android
- Reaccionar nativo TextInput borde no funciona
- "Obtener el paquete JS" Monstruosamente lento
- SyntaxError: El modo estricto no permite declaraciones de función en una sentencia anida de forma lexical
- Reaccionar nativo cómo deshabilitar Android modo dev
- Error "No se pudo obtener BatchedBridge, asegúrese de que su paquete se empaqueta correctamente" al inicio de la aplicación
Según este problema , la clave parece estar estableciendo un estilo en la barra de herramientas que tiene una altura. Si no se establece ninguna altura, no se renderizará. Esperemos que se resuelva pronto.
Aquí está la combinación de cosas que trabajaron para mí:
1) https://github.com/facebook/react-native/issues/2957#event-417214498
"Debe establecer alignItems para estirar (que es también el valor por defecto) en su contenedor, o dar a su barra de herramientas un ancho explícito.Con alignItems conjunto al centro y sin anchura explícita, la barra de herramientas se da 0 ancho implícito.
2) Ajuste de la altura en la barra de herramientas
El código:
He descargado un ic_arrow_back_black_24dp.png, y lo he colocado en la misma carpeta que el archivo index.android.js
Luego, en index.android.js,
class MyComponent extends Component { ... render() { return ( <View style={styles.containerToolbar}> <ToolbarAndroid style={styles.toolbar} title={this.props.title} //navIcon={require('image!ic_arrow_back_white_24dp')} navIcon={require('./ic_arrow_back_black_24dp.png')} onIconClicked={this.props.navigator.pop} //titleColor={'#FFFFFF'}/> titleColor={'#000000'}/> </View> } const styles = StyleSheet.create({ containerToolbar: { flex: 1, //justifyContent: 'center', justifyContent: 'flex-start', // https://github.com/facebook/react-native/issues/2957#event-417214498 alignItems: 'stretch', backgroundColor: '#F5FCFF', }, toolbar: { backgroundColor: '#e9eaed', height: 56, }, });
Debe asignar tanto la altura como el ancho a la barra de herramientas de lo contrario no renderizará.
El código de tu barra de herramientas debería tener este aspecto
<ToolbarAndroid style={styles.toolbar} title="Movies" navIcon={require("../../ic_launcher.png")} onActionSelected={this.onActionSelected} titleColor= "000" actions = {[ {title: "Log out", show: "never"} ]} />
Acción seleccionada
onActionSelected(position) { }
Estilo de la barra de herramientas
toolbar: { backgroundColor: '#2196F3', height: 56, alignSelf: 'stretch', textAlign: 'center', },
Resultado
- Cómo puedo cambiar la imagen de un ImageView en Android
- ¿Puede explicar por favor enCreate y Bundles?