자바코드로 res(리소스)에 있는 string, color 사용하기
자바코드로 res(리소스)에 있는
string, color 사용하기
ㆍ이번에는 자바코드로 res폴더에 있는 string과 color를
꺼내써보도록 하겠습니다.
ㆍxml에서 쓰면 간단하지만 UI를 동적으로 바꿀때는
코드에서 사용하는 법을 알아야 합니다.
ㆍ간단한건 하드코딩 해도 되지만.. 습관이란게 중요하므로
간단한것도 하드코딩은 최대한 피하도록 ~
뭐 바로 일단
[res]-[values]-[string.xml]로
가서 String resources를 하나
만들어줍니다.
이런식으로 대충 만들고
자바코드로 넘어와서
사용해보겠습니다.
음 TextView 하나를
만들어서 거기다가
저 Hi~를 setText해보겠습니다
간단한 테스트이므로
그냥 xml 없이
동적으로 만들어보겠습니다.
public class MainActivity extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
LinearLayout ll = new LinearLayout(this);
TextView tv = new TextView(this);
tv.setText(getString(R.string.tv_text));
ll.addView(tv);
setContentView(ll);
}
}
자 이런식으로 만들면
됩니다.
여기서 중요한 부분은
tv.setText(getString(R.string.tv_text));
이 부분이겠죠?
다시 한번 더
강조해서 본다면
getString(R.string.tv_text)
결과도 한번
보도록 하겠습니다.
문제 없이 잘 출력됬습니다.
뭐 String 배열로 쓴다고 해도
사용방법은 똑같습니다.
대충 아래와 같이
비슷하게 적어줍니다.
public class MainActivity extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
String textArray[] = {getString(R.string.tv_text_a),getString(R.string.tv_text_b),getString(R.string.tv_text_c)};
LinearLayout ll = new LinearLayout(this);
ll.setOrientation(LinearLayout.VERTICAL);
TextView tv = new TextView(this);
tv.setText(textArray[0]+"\n"+textArray[1]+"\n"+textArray[2]);
ll.addView(tv);
setContentView(ll);
}
}
이런식으로 똑같이
getString(R.string.XXX)
배열에 담은다음에
setText하면 됩니다.
짜잔~
그리고 한가지 더
알아보자면
위에 getString(~~~)은
Activity가 아닌곳에서는
에러가 뜨게 됩니다.
그럴경우 앞에 Context.getResources()를 붙여주면 됩니다.
뭐 바로 간단하게
클래스 하나 만들어서
확인해보면
위 사진처럼
getResources().만 붙이면
아까와 똑같이 사용할 수 있습니다
자 다음
Color로 넘어가면
Color도 String과 뭐
똑같습니다.
[res]-[values]-[color]로
가서 원하는 색깔을
넣어줍니다.
대충 넣으시고~
자바로 와서 아까처럼 똑같이
써주시는데
뭐 크게 중요한 부분은
아니지만 Color는 살짝 고려해야할 부분이 있습니다
아까처럼 똑같이 getColor를 써보겠습니다.
위에서 만든 TextView에 바로 입혀서
테스트 해보면 되겠네요
아까 처럼 똑같이 쓰려는데
빨간줄이 뜨면서 뭐라고 합니다..
뭐 타겟버전 어쩌구군요
Alt+Enter를 눌러보면
다양한 해결방법이 나옵니다
뭐 추천해주긴 하는데
그닥 쓰고 싶어지는건 없습니다
아까처럼 앞에 getResources를 붙여보죠
아놔 이건 또 뭔지..
deprecated..
역시 찜찜합니다.
그래서
찜찜함을 해결하기 위해
결론적으로
아래코드를 써줍니다
ContextCompact.getColor(Context, R.color.XXX)
자 뭐라는지 모르겠지만
그냥 써보면 되죠
하라는데로 똑같이 넣어줍니다
오호
빨간줄이나 deprecated도
안뜹니다.
잘 돌아가는지 돌려보죠
오호~
잘돌아갑니다
마지막으로 한번 더 외쳐봅시다
ContextCompact.getColor(Context, R.color.XXX);
컨텍스트 컴팩트 쩜 겟칼라
public class MainActivity extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
String textArray[] = {getString(R.string.tv_text_a),getString(R.string.tv_text_b),getString(R.string.tv_text_c)};
LinearLayout ll = new LinearLayout(this);
ll.setOrientation(LinearLayout.VERTICAL);
TextView tv = new TextView(this);
tv.setText(textArray[0]+"\n"+textArray[1]+"\n"+textArray[2]);
tv.setTextColor(ContextCompat.getColor(this, R.color.pangpangColorRed));
ll.addView(tv);
setContentView(ll);
}
}
'안드로이드(android) > 알아두면 좋은것' 카테고리의 다른 글
NDK : javah 문제(.h 안만들어질때 Could not find~) (0) | 2016.07.14 |
---|---|
[안드로이드]코드 입력시 자동으로 import되도록 설정 (0) | 2016.06.27 |
AppCompatActivity,AppTheme 타이틀(Title) 제거하기 + Fullscreen 만들기 (9) | 2016.06.01 |
스크롤바(ScrollBar) 색상, 위치 변경해보기 (0) | 2016.05.26 |
라디오 버튼(Radio Button) 기본색상 변경해보기 (0) | 2016.05.25 |