Я пытаюсь добавить материал дизайна материала в React Native, но, к сожалению, он ничего не отображает, и я не могу найти то, что мне не хватает.
Это мой модуль.Я передаю два параметра и возвращаю TextInputLayout.
public class MaterialTextInputModule extends SimpleViewManager<TextInputLayout> {
@Nonnull
@Override
public String getName() {
return "MaterialTextInput";
}
@Nonnull
@Override
protected TextInputLayout createViewInstance(@Nonnull ThemedReactContext reactContext) {
TextInputLayout textInputLayout = new TextInputLayout(reactContext, null, R.style.Widget_MaterialComponents_TextInputLayout_OutlinedBox);
TextInputEditText textInput = new TextInputEditText(textInputLayout.getContext());
textInputLayout.addView(textInput);
return textInputLayout;
}
@ReactProp(name="hint")
public void setHint(TextInputLayout textInputLayout, @Nullable String hint) {
textInputLayout.setHint(hint);
}
@ReactProp(name="outlined")
public void setOutlinedBox(TextInputLayout textInputLayout, Boolean outlined) {
if (outlined) {
textInputLayout.setBoxBackgroundMode(TextInputLayout.BOX_BACKGROUND_OUTLINE);
}
}}
Это мой класс пакета, в котором я создаю диспетчеры представлений:
public class MaterialTextInputPackage implements ReactPackage {
@Nonnull
@Override
public List<NativeModule> createNativeModules(@Nonnull ReactApplicationContext reactContext) {
return Collections.emptyList();
}
@Override
public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
return Arrays.<ViewManager>asList(
new MaterialTextInputModule()
);
}}
Я также добавляю его как пакет в MainApplication и затем требуюнативный компонент в рН приложении.Тогда я просто использую его вот так
import React, {Component} from 'react';
import {Platform, StyleSheet, Text, View} from 'react-native';
import MaterialTextInput from './MaterialTextInput';
const instructions = Platform.select({
ios: 'Press Cmd+R to reload,\n' + 'Cmd+D or shake for dev menu',
android:
'Double tap R on your keyboard to reload,\n' +
'Shake or press menu button for dev menu',
});
type Props = {};
export default class App extends Component<Props> {
render() {
return (
<View style={styles.container}>
<MaterialTextInput hint={"Hello my first component"} outlined={true}></MaterialTextInput>
</View>
);
}}
Вот как мне нужен компонент, в основном это MaterialTextInput.js
import {requireNativeComponent} from 'react-native';
module.exports = requireNativeComponent('MaterialTextInput', TextInput);