반응형
공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!! 포스팅 내용이 찾아주신 분들께 도움이 되길 바라며 더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^
|
이번 포스팅에서는 특정 텍스트에 터치 이벤트를 적용하는 방법에 대해 알아보겠습니다.
아래와 같은 문자열이 있다고 해봅시다.
String moreInfo = "더 많은 정보를 보시려면 \'여기\' 를 클릭하세요.";
그리고 '여기' 부분에 Underline, bold, 그리고 오늘의 핵심인 클릭이벤트를 주고 싶다면?
어떻게 해야 할까요??
TextView를 여러개 나눠서 하면 될까요?
나눠서 하면 되기야 하겠지만 여기에는 문제가 있습니다.
디바이스마다 크기를 맞춰야하고, 만약 문자열을 왼쪽 정렬로 해야 한다면,
TextView를 나눠서 하는 걸로는 할 수가 없습니다.
여기서 사용할 수 있는 방법이
SpannableString 과 ClickableSpan 인터페이스 입니다.
SpannableString 에는 이벤트를 넣어주고 싶은 문자열을 넣어줍니다.
String moreInfo = "더 많은 정보를 보시려면 \'여기\' 를 클릭하세요.";
SpannableString spannableString = new SpannableString( moreInfo );
그리고 ClickableSpan 인터페이스를 구현합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 | ClickableSpan clickableSpan1 = new ClickableSpan() { @Override public void onClick(View widget) { // 해당 텍스트를 클릭했을 때 실행할 } @Override public void updateDrawState(TextPaint textPaint) { textPaint.setColor(Color.rgb(243, 110, 84)); // 해당 텍스트 색상 변경 textPaint.setUnderlineText(true); // 해당 텍스트 언더라인 textPaint.setFakeBoldText(true); // 해당 텍스트 두껍게 처리 } }; | cs |
위처럼 했다면 이제 TextView에 문자를 넣어주고 어떤 문자에 처리를 할지 결정해주는 코드를
작성하면 됩니다.
1 2 3 4 | spannableString.setSpan(clickableSpan1, 클릭이벤트를 넣고 싶은 문자열의 시작 index, 클릭이벤트를 넣고 싶은 문자열의 끝 index, 0); TextView textview = (TextView) findViewById(R.id.textView); textView.setText( spannableString ); textView.setMovementMethod(LinkMovementMethod.getInstance()); | cs |
이상입니다.
반응형
'안드로이드' 카테고리의 다른 글
안드로이드 블루투스 묻지 않고 On/Off 하는 방법 (0) | 2017.11.07 |
---|---|
안드로이드 비콘(BLE) 스캐너 Android Beacon Library 사용 방법! (15) | 2017.11.03 |
안드로이드 RecylerView에 SnapHelper를 사용해서 스냅(snap)적용시키기! (2) | 2017.10.25 |
안드로이드 TextView, EditText 에 java 코드로 Bold 속성 주기! (0) | 2017.10.23 |
안드로이드 BLE(Bluetooth Low Energy) Scanner 구현 => BluetoothAdapter, BluetoothLeScanner (48) | 2017.10.20 |