テキストが動的に変更されたTextViewがあります。このテキストには、<a href='myWord'>myWord</a>
のような文字列が含まれています。私はこの「リンク」をクリックした後、同じアクティビティでEditTextにmyWordを表示します。androidのTextViewの中のクリック可能な単語
これは私のコードです:
txt.setText(Html.fromHtml("...<a href='link'>link</a>..."));
txt.setMovementMethod(LinkMovementMethod.getInstance());
それはhref属性内のURLのために働くのですが、他の形式のエラーがあります。
私はStackOverflowで多くの類似の質問を見つけましたが、すべてがURLリンクに関するものでした。私のアプリでは、アクティビティ内に「リンク」を作成したいと思っています。 一般的に、タグが別のものに変更される場合は、タグを別のタグに変更することができます...
私を手伝ってください! ありがとうございました!
-----解決済み----- アイデアのためにJacob Phillipsありがとう!
将来は誰かが面白いかもしれません。 これはコードです:
//This is my string;
String str = "<b>Text</b> which contains one <a href='#'>link</a> and another <a href='#'>link</a>";
//TextView;
TextView txt = new TextView(this);
//Split string to parts:
String[] devFull = data[v.getId()][1].split("<a href='#'>");
//Adding first part:
txt.append(Html.fromHtml(devFull[0]));
//Creating array for parts with links (they amount always will devFull.length-1):
SpannableString[] link = new SpannableString[devFull.length-1];
//local vars:
ClickableSpan[] cs = new ClickableSpan[devFull.length-1];
String linkWord;
String[] devDevFull = new String[2];
for(int i=1; i<devFull.length; i++){
//obtaining 'clear' link
devDevFull = devFull[i].split("</a>");
link[i-1] = new SpannableString(devDevFull[0]);
linkWord = devDevFull[0];
cs[i-1] = new ClickableSpan(){
private String w = linkWord;
@Override
public void onClick(View widget) {
// here you can use w (linkWord)
}
};
link[i-1].setSpan(cs[i-1], 0, linkWord.length(), 0);
txt.append(link[i-1]);
try{
txt.append(Html.fromHtml(devDevFull[1]));
}
catch(Exception e){}
}
ありがとう、私はボタンを使用することはできません。私のTextView内のテキストは静的ではないので、次回に "リンク"がどこに表示されるのかわかりません。テキストはDBから来て、何らかの形で私のlinkWordに印を付ける必要があります。 タグを使用しています... – lubart
カスタムコンテンツを作成しようとしましたか? – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz