Android Native Bridging в React Native с использованием TextView для отображения HtmlAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Android Native Bridging в React Native с использованием TextView для отображения Html

Сообщение Anonymous »

Я пробовал использовать несколько библиотек, которые могут принимать текст HTML и отображать его, как в библиотеках WebView, но я пробовал что-то другое.
Я пробую 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));
}
}
}
Затем создал MyPackage:

Код: Выделить всё

        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;
}
}
Затем добавлен MyPackage() внутри пакетов в MainApplication.java:

Код: Выделить всё

@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;
}
Но что происходит, когда я импортирую TextView из собственного пользовательского интерфейса:

Код: Выделить всё

const MyCustomView = requireNativeComponent('MyCustomView');


Текст пуст, потому что текст не переносит и не изменяет размер текстового представления, но когда я устанавливаю высоту: Текст виден, но я не хочу задавать высоту, я хочу, чтобы высота автоматически устанавливала высоту, содержащую текст внутри, как мне этого добиться?
Текст виден, но я не хочу задавать высоту, я хочу, чтобы высота автоматически устанавливала высоту, содержащую текст внутри.
п>

Подробнее здесь: https://stackoverflow.com/questions/787 ... splay-html
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»