2016-04-18 7 views
0

In meiner Anwendung brauche ich eine Sidrawer. Zuerst dachte ich, ich benutze die plugin from Telerik, die einen Sidedrawer enthält. Aber dann habe ich herausgefunden, here war es nicht möglich, dieses Plugin in einem Nativescript/Angular 2-Projekt noch zu verwenden. Dann habe ich über die placeholder in Nativescript herausgefunden, die iOS/Android native Widgets verwenden können.Verwenden Sie mobile OS-spezifische Widgets

So für die Sidade Drawer, ich dachte, ich könnte die Navigation drawer von Android verwenden, aber der Typoskript-Compiler (TSC) sendet mir einen Fehler, mir zu sagen, dass es nicht den Namen "Android" erkennt (siehe Link über Platzhalter).

Vielen Dank für Ihre Hilfe

+0

Haben Sie diesen Fehler nach dem versuchten Build oder nur im Typoskript intellisense erhalten? Wenn Sie über den Intellisense-Fehler "Name kann nicht gefunden werden" sprechen, sollten Sie ihn einfach ignorieren - Ihr Projekt wird problemlos erstellt und Sie haben Zugriff auf die Natie-APIs von Android und iOS. –

+0

Ich habe diesen Fehler, wenn ich den Befehl 'TSC' in der Konsole eintippe. –

+0

können Sie bitte einige weitere Informationen mit uns teilen ... zum Beispiel den Befehl, den Sie ausführen und etwas von dem Code, den Sie versuchen zu bauen –

Antwort

1

Hier ist eine grundlegende Implementierung des nativen Android-Fach-Layouts als Neben Schublade ist.

In Ihrem page.xml

<Page xmlns="http://schemas.nativescript.org/tns.xsd" navigatingTo="navigatingTo"> 
    <Placeholder creatingView="creatingView"/> 
</Page> 

In Sie page.js

var app = require("application"); 
var drawer; 
var page; 
var appContext; 
function navigatingTo(args) { 
    page = args.object; 
    appContext = app.android.context; 
} 
exports.navigatingTo = navigatingTo; 

function creatingView(args) { 
    // init DrawerLayout 
    drawer = new android.support.v4.widget.DrawerLayout(appContext); 
    var frame = new android.widget.FrameLayout(appContext); 

    // here you can use ListView with Adapters if you prefer 
    var linearMenu = new android.widget.LinearLayout(appContext); 
    linearMenu.setOrientation(1); 

    // adding the menu options 
    var textView1 = new android.widget.TextView(appContext); 
    textView1.setText("ITEM 1"); 
    var textView2 = new android.widget.TextView(appContext); 
    textView2.setText("ITEM 2"); 
    var textView3 = new android.widget.TextView(appContext); 
    textView3.setText("ITEM 3"); 

    // setting layout params 
    var lp = new android.support.v4.widget.DrawerLayout.LayoutParams(100,  android.widget.LinearLayout.LayoutParams.MATCH_PARENT); 
    lp.gravity = android.view.Gravity.START; 

    linearMenu.setLayoutParams(lp); 
    linearMenu.addView(textView1); 
    linearMenu.addView(textView2); 
    linearMenu.addView(textView3); 

    // finally adding the elements to the DrawerLayout and attaching it to the NativeScript placeholder 
    drawer.addView(frame, new android.support.v4.widget.DrawerLayout.LayoutParams(android.view.ViewGroup.Layou tParams.MATCH_PARENT, android.view.ViewGroup.LayoutParams.MATCH_PARENT)); 
    drawer.addView(linearMenu); 
    args.view = drawer; 
} 
exports.creatingView = creatingView; 

Dies ist ein sehr einfaches Beispiel ohne Übergangseffekte und keine Lüftungs Hörer angebracht wird aber nach wie vor mit Swipe arbeiten als eine Demonstration, wie man die nativen APIs verwendet, um eine Schublade in {N} zu erstellen - hoffe, das hilft dir in deinem Projekt.

+0

Entschuldigung für die späte Antwort. Nun, ich habe Ihren Code ausprobiert, und ich bin mir sicher, dass er funktioniert, aber da ich mit Nativescript AND Angular 2 entwickle, denke ich, dass es einige Unterschiede gibt (ich bin mir ziemlich sicher, dass ich die Funktion creatingView verwenden kann) Jetzt bekomme ich immer noch nichts auf der Seite. Und danke für Ihre Zeit –

Verwandte Themen