Я пробую Android Native Bridging чтобы я мог использовать текстовое представление Java и возвращать текстовое представление внутри моего компонента.
Сначала я создал MyCustomViewManager:
Код: Выделить всё
package com.pollit;
import android.view.ViewGroup.LayoutParams;
import android.text.Html;
import android.widget.TextView;
import com.facebook.react.uimanager.SimpleViewManager;
import com.facebook.react.uimanager.ThemedReactContext;
import com.facebook.react.uimanager.annotations.ReactProp;
public class MyCustomViewManager extends SimpleViewManager {
public static final String REACT_CLASS = "MyCustomView";
@Override
public String getName() {
return REACT_CLASS;
}
@Override
protected TextView createViewInstance(ThemedReactContext reactContext) {
TextView tv = new TextView(reactContext);
tv.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
return tv;
}
@ReactProp(name = "text")
public void setText(TextView view, String text) {
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
view.setText(Html.fromHtml(text, Html.FROM_HTML_MODE_COMPACT));
} else {
view.setText(Html.fromHtml(text));
}
}
}
Код: Выделить всё
package com.pollit;
import java.util.ArrayList;
import android.widget.TextView;
import com.facebook.react.ReactPackage;
import com.facebook.react.uimanager.SimpleViewManager;
import com.facebook.react.uimanager.ThemedReactContext;
import com.facebook.react.uimanager.annotations.ReactProp;
import com.facebook.react.uimanager.ViewManager;
import java.util.List;
import com.facebook.react.bridge.NativeModule;
import com.facebook.react.bridge.JavaScriptModule;
import java.util.Collections;
import com.facebook.react.bridge.ReactApplicationContext;
public class MyPackage implements ReactPackage {
@Override
public List
createNativeModules(ReactApplicationContext reactContext) {
return Collections.emptyList();
}
@Override
public List createViewManagers(ReactApplicationContext reactContext) {
List viewManagers = new ArrayList();
viewManagers.add(new MyCustomViewManager());
return viewManagers;
}
}
Код: Выделить всё
@Override
protected List getPackages() {
@SuppressWarnings("UnnecessaryLocalVariable")
List packages = new PackageList(this).getPackages();
// Packages that cannot be autolinked yet can be added manually here, for example:
//packages.add(new TwitterSigninPackage());
packages.add(new MyPackage());
return packages;
}
Код: Выделить всё
const MyCustomView = requireNativeComponent('MyCustomView');
Код: Выделить всё
Текст виден, но я не хочу задавать высоту, я хочу, чтобы высота автоматически устанавливала высоту, содержащую текст внутри.
п>
Подробнее здесь: https://stackoverflow.com/questions/787 ... splay-html