기술참고자료/Android | 2011. 5. 6. 14:19
TextView는 하나이고, 여기에 들어가는 문자열도 하나.
그런데 중간에 링크경로가 들어있다.
다른 문자열은 그대로 두고, 링크경로에만 이벤트를 주고 싶은거지.
어떻게 해야 하는걸까?
내가 테스트한 환경은 총 3개의 클래스이다.
메인클래스/서비클래스/ClickableSpan을 상속한 새로운 클래스.
<메인 클래스>
import android.app.Activity;
import android.os.Bundle;
import android.text.Spannable;
import android.text.method.LinkMovementMethod;
import android.widget.TextView;
import android.widget.TextView.BufferType;public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String str = "Some text http://twitpic.com/3701kz Mac is very good.";
TextView mainTextView = (TextView) findViewById(R.id.mainTextView);mainTextView.setMovementMethod(LinkMovementMethod.getInstance());
mainTextView.setText(str, BufferType.SPANNABLE);Spannable spans = (Spannable) mainTextView.getText();
//string parsing...
int startIndex = str.indexOf("http://twitpic.com/");
String resultSubString = str.substring(startIndex);
int endIndex = resultSubString.indexOf(" ");
//clickable processing...
MyClickable clickable = new MyClickable(MainActivity.this);
spans.setSpan(clickable, startIndex, (endIndex + startIndex), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
}
<ClickableSpan을 상속한 새로운 클래스>
<서브클래스>import android.app.Activity;
import android.content.Intent;
import android.text.TextPaint;
import android.text.style.ClickableSpan;
import android.view.View;class MyClickable extends ClickableSpan {
private Activity activity;
public MyClickable(Activity activity) {
super();
this.activity = activity;
}public void updateDrawState(TextPaint ds) {
@Override
super.updateDrawState(ds);
ds.setUnderlineText(false);
}
public void onClick(View widget) {
Intent intent = new Intent(this.activity, SubActivity.class);
this.activity.startActivity(intent);
}
}
QR코드의 정체를 알려주마! (0) | 2011.05.06 |
---|---|
[Android] No configs match configSpec (0) | 2011.05.06 |
[Android] Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE (0) | 2011.05.06 |
[Android] EditText 정규식으로 한글제한 체크하기 (2) | 2011.05.06 |
[Android] WebView 연습 (0) | 2011.05.06 |
Recent Comments