2017-05-10 2 views
0

Ich habe eine Nativescript-App (Android), wo ich eine anklickbare Spanne erstellen, die in einem Textabsatz verschachtelt ist. Das Ziel besteht darin, die Spannweite in einer grünen Farbe anzuzeigen und wenn Sie darauf klicken, um sie an einen anderen Ort umzuleiten. Hier ist mein Code:Nativescript Klickbare Spannenfarbe in Android

var color = '#3aba90'; 
 
if (textview.android) { 
 
\t \t var ss = new android.text.SpannableString(text); 
 
\t \t var ClickableSpanClass = android.text.style.ClickableSpan.extend({ 
 
\t \t \t onClick: function (view) { 
 
\t \t \t \t func.redirectToSite(true); 
 
\t \t \t }, 
 
\t \t \t updateDrawState: function (tp) { 
 
\t \t \t \t this.super.updateDrawState(tp); 
 
\t \t \t \t tp.setColor(color); 
 
\t \t \t \t tp.setUnderlineText(false); 
 
\t \t \t } 
 
\t \t }); 
 
\t \t var clickablespan = new ClickableSpanClass(); 
 
\t \t ss.setSpan(clickablespan, 356, 386, 33); 
 
\t \t textview.android.setText(ss); 
 
\t \t  textview.android.setMovementMethod(android.text.method.LinkMovementMethod.getInstance()); 
 
}

Das Problem, das ich erlebt habe ist, dass die Spanne nicht in der grünen Farbe rendert die ich ausgewählt hat. Ich habe auch 0x3aba90ff, grün und andere Variationen der Farbvariablen versucht, aber ich kann es nicht in der richtigen Farbe rendern lassen.

Irgendeine Idee, was ich falsch mache?

Vielen Dank.

Antwort

1

Es stellt sich heraus, dass die Lösung sehr einfach war:

ich eine regelmäßige Farbe string (# 3aba90) zu einem Android nativen API-Aufruf übergeben wollte. So bald wie geändert:

tp.setColor (Farbe);

zu

tp.setColor (new colorModule.Color (Farbe) .android);

alles funktioniert. Stellen Sie sicher, dass Sie das colorModule importiert haben:

var colorModule = require ("color");

HINWEIS: Danke Nikolay Iliev von Telerik für diese Lösung.

+0

Für alle, die sich in der vollständigen Umsetzung für Android und iOS: https://github.com/NickIliev/NativeScript-Issues-2017/tree/master/others/clickableSpanIOSAndroid –

+0

Nikolay, eine Note auf Ihrem Beispiel. In der iOS-Implementierung ändern Sie die Farben des "Hot Zone" -Textes, aber er reagiert nicht auf Benutzer-Taps. Für diese Zonen sind keine Links definiert. – dpdragnev