簡単なTextView
をAndroidのネイティブコードからJavascriptビューに表示しようとしています。ただし、アプリケーションは静かに失敗し、私は、デフォルトの "Hello World"ネイティブAndroidビューをReact Nativeに表示することができません
RCTScannerViewManager.java
public class RCTScannerViewPackage implements ReactPackage {
@Override
public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
return Collections.emptyList();
}
@Override
public List<Class<? extends JavaScriptModule>> createJSModules() {
return Collections.emptyList();
}
@Override
public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
return Arrays.<ViewManager> asList(
new RCTScannerViewManager()
);
}
}
MainApplication.java
public class RCTScannerViewManager extends SimpleViewManager<TextView> {
public static final String REACT_CLASS = "RCTScannerView";
@Override
public String getName() {
return REACT_CLASS;
}
@Override
protected TextView createViewInstance(ThemedReactContext reactContext) {
TextView tv = new TextView(reactContext);
tv.setText("hello from android !");
return tv;
}
}
RCTScannerViewPackage.javaを見ます
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage(),
new RCTScannerViewPackage()
);
}
};
ScannerView.js
import React, { Component } from 'react'
import { Text, View, requireNativeComponent } from 'react-native'
class ScannerView extends Component {
render() {
return <RCTScannerView />
}
}
ScannerView.propTypes = {
...View.propTypes
}
const RCTScannerView = requireNativeComponent('RCTScannerView', ScannerView);
export default ScannerView
index.android.js
import React, { Component } from 'react'
import { AppRegistry, Text, View } from 'react-native';
import ScannerView from './ScannerView';
class AwesomeProject extends Component {
render() {
return (
<View>
<Text> Hello world </Text>
<ScannerView></ScannerView>
</View>
);
}
}
AppRegistry.registerComponent('AwesomeProject',() => AwesomeProject)
そんなにありがとうトリックをしました!これらのスタイルは 'View.onDraw'で設定された寸法よりも優先されますか? – Carpetfizz
あなたはネイティブAndroidレイアウト属性(LayoutParams)を参照していますか?その場合は、はい、ViewManager内のネイティブ側で自分で設定した値は、React Nativeフレームワークによってオーバーライドされます。私が書いたように、RNは全く別のレイアウトシステムを使います。ネイティブAndroid LayoutParamsはそれとは関係ありません。 –
ゴッチャは大変感謝しています!私はこれに1ヶ月近く立ち往生し、他のプロジェクトに移りました。あなたは私がRNに戻された日に答えました:) – Carpetfizz