2016-04-07 6 views
3

タイプスクリプトを使用して、ネイティブスクリプトアプリにネイティブのアンドロイドUIコンポーネント(ボタンやキャンバスなど)を表示したいとします。一例として、私はtypescriptです次のコードでアンドロイドのボタンを拡張したい:typescriptを使用したnativescriptでのカスタムアンドロイド表示

//custom.js 
export class NativeComponent extends android.widget.Button{ 
    constructor(context){ 
     super(context); 
     this.setText("test"); 
    } 
} 

、その後、私は私のXMLビューでそれをロードしよう:

Page xmlns="http://schemas.nativescript.org/tns.xsd" loaded="pageLoaded"> 
    <StackLayout> 
    <Label text="Tap the button" class="title"/> 
    <Button text="TAP" tap="{{ tapAction }}" /> 
    <Label text="{{ message }}" class="message" textWrap="true"/> 
    <custom:NativeComponent /> 
    </StackLayout> 
</Page> 

...しかし、これは常にクラッシュします。これに関する文書は非常に貧しい/私はまだ何も見つけ出していない。

+0

あなたはこれに対する解決策を見つけましたか?@Finkes –

答えて

3

カスタムコントロールを使用するには、XMLネームスペースを追加して、ファイルをロードする場所からフレームワークを知る必要があります。また、JSコードは、そのようなあなたはネイティブコンポーネントの作成を置くべきアンドロイドのためのパブリック関数_createUI()を持たなければならないなど、いくつかの特定の構造に従う必要があり

<Page xmlns="http://schemas.nativescript.org/tns.xsd" xmlns:custom="./path/to/custom.js" loaded="pageLoaded"> 
    <StackLayout> 
    <Label text="Tap the button" class="title"/> 
    <Button text="TAP" tap="{{ tapAction }}" /> 
    <Label text="{{ message }}" class="message" textWrap="true"/> 
    <custom:NativeComponent /> 
    </StackLayout> 
</Page> 

:だからあなたのXMLは次のようになります。 iOSの場合、これはコンストラクタで行われます。詳細はhttps://docs.nativescript.org/plugins/ui-plugin.htmlをご覧ください。

関連する問題