テキストの中でクリック可能なテキストを作成しようとしていますが、私にとってはうまくいくstackoverflowのコードを見つけるのは幸運でしたが、クリックを適用したい私の質問は、今では私は必要なパラメータを呼び出して渡すことができ、再利用可能な方法で、以下のコードをバンドルすることが可能ですし、どのように以下Androidで使用可能なメソッドにコードをラップします
SpannableString ss = new SpannableString("Android is a Software stack");
ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void onClick(View textView) {
startActivity(new Intent(MainActivity.this, NextActivity.class));
}
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setUnderlineText(false);
}
};
ss.setSpan(clickableSpan, 10, 27, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
ss.setSpan(new StyleSpan(Typeface.ITALIC), 10, 27, 0);
TextView textView = (TextView) findViewById(R.id.hello);
textView.setText(ss);
textView.setMovementMethod(LinkMovementMethod.getInstance());
textView.setHighlightColor(Color.TRANSPARENT);
場合はどのように上の任意の提案、私が使用する決意を持っているものであるということですそれをより良くするには?
TextView textView = (TextView) findViewById(R.id.one) ;
String s="This link has many clickable text which are link one, link two
and the last whick is link three";
SpannableString ss = new SpannableString(s);
String one ="link one";
String two ="link two";
String three ="link three";
int firstIndex = s.indexOf(one);
int secondIndex = s.indexOf(two);
int thirdIndex = s.indexOf(three);
ClickableSpan firstClick = new ClickableSpan() {
@Override
public void onClick(View widget) {
startActivity(new Intent(MainActivity.this, a.class));
}
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setUnderlineText(false);
}
};
ClickableSpan secondClick = new ClickableSpan() {
@Override
public void onClick(View widget) {
startActivity(new Intent(MainActivity.this, b.class));
}
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setUnderlineText(false);
}
};
ClickableSpan thirdClick = new ClickableSpan() {
@Override
public void onClick(View widget) {
startActivity(new Intent(MainActivity.this, c.class));
}
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setUnderlineText(false);
}
};
ss.setSpan(firstClick,firstIndex, firstIndex+one.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
ss.setSpan(secondClick,secondIndex, secondIndex+two.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
ss.setSpan(thirdClick,thirdIndex, thirdIndex+three.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
textView.setLinksClickable(true);
textView.setMovementMethod(LinkMovementMethod.getInstance());
textView.setText(ss, TextView.BufferType.SPANNABLE);
新しい方法で何を変更しますか? R.idを知っている既存のテキストウィジェット?影響を受けるテキストの部分をどのように知っていますか? –
あなたのニーズに合致する 'SpannableString'のサブクラスを作成できるようにパラメトリックにする必要があります。 – AxelH
leos-literak、Droidmanによって与えられた答えのように、ちょっとしたテキストの間隔でメソッドを呼び出せるようにしたい。 – shollynoob