Skip to content
This repository has been archived by the owner on Jun 6, 2019. It is now read-only.

自定义原生组件 #67

Open
yumi0629 opened this issue Aug 26, 2016 · 7 comments
Open

自定义原生组件 #67

yumi0629 opened this issue Aug 26, 2016 · 7 comments

Comments

@yumi0629
Copy link

yumi0629 commented Aug 26, 2016

新版中文网站及文档已经上线,请访问 https://weex-project.io/cn/ , 此处后续不再维护,谢谢理解。

点击查看原文

如何自定义一个原生组件?

Weex已经包含了最关键的平台组件,例如 ScrollView, ListView, Text, Imageview 等等。当然,这些组件并不能完全满足你的需求。另外,那些在你的工程中常用的大量原生UI组件,可能需要被简单地集合到Weex中。幸运的是,通过任意已存在的组件来创建你的自定义组件是一件很方便的事。

步骤:

1.自定义组件必须继承自 WXComponent 或者 WXContainer
2.weex SDK可以识别 @WXComponentProp (name = value(value 是 attr 或者 dsl style));
3.方法必须是public的;
4.组件类不能是一个内部类;
5.自定义组件不能被 ProGuard 之类的工具混淆;
6.组件方法在UI线程被调用,因此不要在里面进行耗时的操作;
7.Weex的参数类型可以是 int, double, float, String, Map, List 和实现了 WXObject 接口的自定义类;

参考以下例子:

 `package com.taobao.weex.ui.component;
……

public class  MyViewComponent extends WXComponent{

       public MyViewComponent(WXSDKInstance instance, WXDomObject node, 
                    WXVContainer parent,  String instanceId, boolean lazy) {                
           super(instance, node, parent, instanceId, lazy);
        }

       @Override
       protected void initView() {
          //TODO:your own code ……
       }

      @Override
      public WXFrameLayout getView() {
         //TODO:your own code ………        
      }
      @WXComponentProp(name=WXDomPropConstant.WX_ATTR_VALUE)
      public void setMyViewValue(String value) {
         ((TextView)mHost).setText(value);
      }

}

必须注册组件:

WXSDKEngine.registerComponent("MyView", MyViewComponent.class);
@huoyabingqian
Copy link

这个组件注册在什么地方注册是在application当中吗,你是让我们猜吗

@wzj583585700
Copy link

有iOS的吗

@george-luofz
Copy link

同问iOS

@Jinjiang
Copy link
Contributor

@george-luofz @wzj583585700
英文 http://alibaba.github.io/weex/doc/advanced/extend-to-ios.html
中文 #17

文档结构我们这块设计的确实有问题,接下来会调整一下
感谢理解

@yundongbot
Copy link

@yulinho
Copy link

yulinho commented Jan 5, 2017

Module 扩展 可以用 callback.invoke 回调,那 Component 扩展如何实现回调 WEEX 里面的方法?

@yundongbot
Copy link

新版中文网站及文档已经上线,请访问 https://weex-project.io/cn/ , 此处后续不再维护,谢谢理解。

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants