TextView(Button) TextColor Selector 코드로 변경하기
TextView(Button)
TextColor Selector
코드로 변경하기
ㆍ 이번에는 글씨색깔 Selector 사용하는 부분에
관해서 간단하게 써보겠습니다.
ㆍ 이전글 duplicateParentState에서도 뭐 비슷하게
쓰긴 했었는데 한가지 더 알아야하는 부분을 써볼까
합니다.
ㆍ 보통 눌림효과를 줄때 [drawable]에서 xml을 작성해서
레이아웃 처음에 잡아줄때 넣을때가 있는데 이런 경우 말고
코드상에서 눌림효과를 써줘야야 할 경우가 있습니다.
예를 들어서
음.. ON/OFF버튼으로
예를 들어볼까요?
일단 2개
그려놓긴 했는데
만약 처음에 OFF버튼이 있고
OFF버튼을 터치하면
오른쪽과 같이 ON버튼으로
변경되는 버튼이 있다고
가정해보겠습니다
그리고 다시
ON버튼을 터치하면
OFF버튼으로 변경되겠죠?
자 이럴경우는
터치리스너 달아서
터치시 setTextColor와
setBackgroundResource
를 변경시켜주면
쉽게 해결됩니다.
그런데 눌림효과까지
동시에 주려 한다면
어떤식으로 코딩을
해야할까요?
음.. 이해를
돕기 위해서
간단하게 완성된
결과를 보면
참 제가
디자인적으로는
감각이 없어서
이상할 수 있는데
토글까지 시키면서
눌림효과를 줘야할 경우
자바코드에서
어떻게 짜야할지
간단하게 보면
(xml은 전부생략하겠습니다)
public class MainActivity extends AppCompatActivity
{
TextView tv;
boolean btnState = false;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView)findViewById(R.id.tv);
tv.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
if(btnState)
{
btnState = false;
tv.setText("OFF");
tv.setBackgroundResource(R.drawable.off);
}
else
{
btnState = true;
tv.setText("ON");
tv.setBackgroundResource(R.drawable.on);
}
}
});
}
}
방법은 여러가지
있겠지만 이런식으로
짜면 토글효과가
나겠죠?
그런데 위 코드는
토글효과+Background 변경만
적용된 상태입니다
왜냐하면
background처럼
똑같이 변경하려고
setTextColor를
시도해보면
이런식으로 나옵니다
우리는 만들어놓은 xml을
넣기위해
int resid 형태로 넣어야되는데
찾아봐도 없습니다
이럴때 어떻게 해야하는가..!!
이거 한줄 설명하기 위해
위에 쓸때없는 말을 많이 썼습니다.
코드로 글씨색깔 눌림효과 주는 방법
방법은 위에 추천해주는
메소드에서
setTextColor(ColorStateList colors)
이것을 써야 합니다
그럼 일단 한번
써보겠습니다
자 이런식으로 원하는대로
넣어준 것 같은데 빨간줄이 뜹니다.
빨간줄이 뜨는 이유는
R.drawable <<< 이부분이 문제입니다
여기서는 R.drawable이 아닌
R.color 값이 들어가야합니다
자 그럼
color폴더를 만들어봅니다
자 이렇게 만들면 됩니다
[res]-[new]-[resource file]로
color 폴더를 만드셔도 되고
경로에 직접 찾아가서 만들어도 됩니다
color 폴더를 만든후에
눌림효과 코딩을 해놓은
xml파일을 넣어줍니다
여기까지 완성됬으면
한번 R.color.color_on 이렇게
넣어봅니다.
넣어보면 color부분은
빨간줄이 안뜨는데
앞에 getColorStateList에서
빨간줄이 뜨면서 뭐라고 합니다
대충 읽어보면 api버전
문제관련입니다
deprecated가 됨으로
나오는 현상으로
이를 해결하기 위해서
아래와 같이 써주면
됩니다.
후...
결론은 아래 한줄만
알아두면 되는 것입니다..
(아 color 폴더를 만드는것도 나름 중요..)
원래 이 부분만 살짝 적을까하다가
나름 좀 제대로 설명하고 싶었는데
자세히 설명하기에는
xml 파일들 때문에 길어질 것 같고..
이 간단한 문제를 길게 쓰기에는 애매하고..
하다보니 이것도 저것도
안된것 같습니다..
뭔가 정리가 안된글..ㅠㅠ
1. color 폴더를 만든다
2.setTextColor(ContextCompat.getColorStateList(context ,R.color.xxx));
형태로 넣는다
이거 2가지만 알아두시면 될 것 같습니다
'안드로이드(android) > 알아두면 좋은것' 카테고리의 다른 글
setTextSize단위 sp dp 변환하기 (2) | 2016.10.18 |
---|---|
안드로이드 스튜디오 2.2 한글깨짐 (0) | 2016.10.09 |
앱 종료시 AsyncTask 종료시키기 (0) | 2016.08.15 |
Notification 아이콘 클릭시 특정 프래그먼트로 이동 (1) | 2016.08.02 |
안드로이드 스튜디오 JavaCV 관련 (0) | 2016.07.19 |