android-layout - 原生 UI 组件 - Android View 更新时刷新

标签 android-layout react-native react-native-android react-native-native-ui-component

我们正在尝试实现一个原生 UI 组件,它封装了一个 Android 组件,该组件使用我们现有的渲染框架(使用 AdapterView)获取数据并显示它。我们事先并不知道数据会是什么,所以这个组件的高度和内容完全是任意的。这大部分工作正常,除了渲染组件异步请求其他内容(例如图像)的情况。在这种情况下,图像被检索,ImageView是“显示的”,但 UI 最终什么也没显示(字面意思似乎是适当大小的透明 View )。

我们知道这些 View 在普通的 Android 中工作得很好,但我们似乎遗漏了一些东西,告诉 RN/Yoga 在从服务器加载图像时它应该重新渲染,以便正确显示它们。
这或多或少是这样的:

public class ReactServerListComponent extends SimpleViewManager<LinearLayoutExtension> {
  private static final String REACT_CLASS = "TAReactServerListComponent";

  @Override
  public String getName() {
    return REACT_CLASS;
  }

  ...
  @ReactProp(name = "link")
  public void setLink(final LinearLayoutExtension view, String theNewLink){
    //async loader logic invokes this on success
    view.loadRetrievedEntries(newEntries); 
  }
  ...
}

在这种情况下 LinearLayoutExtension包含适配器生成的所有 View ,而适配器又将包含异步加载的 ImageView 。

我们已经尝试了一些方法,例如返回 ShadowNode具有测量功能,或保留 ShadowNode 的引用并调用 dirty()等就可以了。

这样做的正确方法是什么?不幸的是,除了“检查 repo ”之外,我们还没有找到处理真正复杂组件的文档或示例......

最佳答案

你可以试试view.invalidate()在群里。
您还可以删除占位符 ImageView 并添加具有正确图像的更新 View 。

但是,如果它只是刷新 ImageView ,您还可以使用诸如 Volley 、毕加索、滑翔等之类的东西来处理 ImageView 本身。

关于android-layout - 原生 UI 组件 - Android View 更新时刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49016480/

相关文章:

reactjs - 如何增加 react-native Slider 组件的高度?

react-native - React Native:运行前总是gradlew clean react-native-run-android

react-native - 类型错误 : null is not an object while accessing the Native Module

android - 如何在 2 秒后从服务器在 imageview 中更改图像?

node.js - 使用 TypeScript 配置 React Native 时出错

javascript - React-native 不应该只渲染与 React 工作方式类似的更改组件吗?

react-native - 用户单击输入时如何清除 TextInput "placeholder"?

android - 将图标添加到 Android 抽屉导航?

android - fragment 中的 MergeAdapter 布局问题

android - 从 Fragment 添加项目到操作栏的选项菜单后发生崩溃,然后更改方向