2017-05-10 14 views
0

テキスト段落内にネストされたClickableスパンを作成するNativescriptアプリ(Android)があります。目標は緑の色でスパンを表示し、クリックすると別の場所にリダイレクトされます。ここに私のコードは次のとおりです。Nativescript 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()); 
 
}

私が経験しています問題は、スパンは、私が選択した緑の色でレンダリングしないということです。私も0x3aba90ff、緑、およびその他の色のバリエーションを試しましたが、正しい色でレンダリングすることはできません。

私が間違っていることは何ですか?

ありがとうございます。

答えて

1

それは解決策は非常に簡単だったことが判明:

私はAndroidのネイティブAPIコールに通常の色文字列(#3aba90)を渡そうとしました。したがって、すぐに変更されました:

tp.setColor(color);

tp.setColorに(新しいcolorModule.Color(色).android)。

すべてが機能しました。もちろん、インポートされたcolorModuleを持っていることを確認してください:

var colorModule = require( "color");

注:このソリューションでは、TelerikのNikolay Ilievに感謝します。

+0

AndroidとiOSの両方を完全に実装したいと思っている皆様:https://github.com/NickIliev/NativeScript-Issues-2017/tree/master/others/clickableSpanIOSAndroid –

+0

Nikolay、あなたの例に1つのメモ。 iOSの実装では、「ホットゾーン」テキストの色を変更していますが、ユーザーのタップには反応しません。これらのゾーンに定義されているリンクはありません。 – dpdragnev

関連する問題