몇가지 중요한 Widget 들에 대해서 다루겠습니다.
Widget의 이름과 해당 Widget이 갖고있는 주요 속성에 대해서 다루며, MainActivity.java에서 속성값을 변경하는 부분을 다룹니다.
1. TextView
1) XML
id : 객체를 구분하는 ID ( TV1 이라고 설정했습니다. )
Text : TextView에 들어갈 문자열
TextAppearance : 텍스트의 테마를 설정할 수 있습니다.
(기본적으로 몇개의 샘플 테마들이 저장되어있습니다.)
2) Java
다음으로 MainActivity.java파일을 아래와 같이 변경했습니다.
이전에 xml파일에서 만든 TV1이라는 TextView의 주소값을 갖고와서 저장할 변수가 필요합니다.
TextView text1 라는 코드를 통해서 text1이라는 변수를 만들었고요.
이후 setContentView를 통해서 activity_main.xml을 갖고온 후 findViewById라는 메서드를 통해서 위에서 만든 TextView의 ID값(TV1)을 통해서 해당 TextView를 갖고와 text1 변수에 넣어주었습니다.
이후 setText 메서드를 통해서 원하는 문자열도 글자를 변경할 수 있도록 해주었습니다.
(기존 문자열을 갖고오는 메서드는 getText입니다.)
2. Button
1) XML
다음으로 Button 위젯입니다.
id : btn으로 설정해주었습니다.
text : 버튼에 입력될 기본 문자열입니다.
onClick : 버튼을 누르면 실행될 액션
2) Java
아래는 Java파일에서 Button의 onClick메서드를 설정해주는 과정입니다.
보게되면 btnListener라는 class가 추가된 것을 볼 수 있습니다.
그리고 해당 클래스 객체를 생성해서 btn의 OnClickListener로 설정해 주는 것을 볼 수 있습니다.
Listener라는 녀석은 어떤 위젯이 정해져있는 특정한 액션을 실시할 때를 기다렸다가, 해당 액션이 발생되면 작성된 코드(기능)를 수행하는 기능을 하는 녀석입니다.
따라서 button(btn)을 누르면 Text가 변경되는 것을 볼 수 있습니다.
의문... 그럼 Button 속성에 있던 onClick이라는 녀석은 어떻게 쓰는걸까?
onClick 속성과 같이 자주사용되는 기능에 한정해서 다른 방식으로 해당 기능을 수행할 수 있는 방법을 제공하고 있습니다.
먼저 아래와 같이 Java코드를 작성해줍니다.
간단합니다. 별도 클래스 작업잆이 단 하나의 메서드를 생성하면 됩니다.
이렇게 해주고 xml파일에서 버튼의 onClick메서드를 보세요.
그럼 위와같이 방금 만든 녀석이 보이게 됩니다.
그냥 onClick에 저 녀석을 넣어주고, 실행하면 아래와 같이 잘 수행됩니다.
간단하죠?
하지만, 자주사용되는 몇몇 기능에 한정되어 지원하기 때문에, 두가지 방법 모두 알아두셔야만 합니다!!
3. TextView + 2 Button
Q, 만약 버튼이 2개 이상이고, 버튼을 누르면 어떤 버튼이 눌렸는지 알려주는 TextView가 존재한다고 합니다. 그럼 하나의 Listener를 통해서 다수의 버튼 중 어떤 버튼이 눌렸는지 알려줄 수 있을까요?
A. 어렵지 않습니다. onClick(View v) 이라는 부분에 v라는 매개변수가 존재하는 것을 볼 수 있습니다.
이 v라는 녀석이 통해서 버튼을 구분할 수 있습니다.
위와같이 2개의 버튼과 textView를 만들었습니다. (괄호 안에 값 = ID)
다음으로 Java파일 내용입니다.
보게되면, 거의 큰 차이는 없고, btnListener 영역에서의 차이가 있습니다.
v.getId() 라는 메서드를 통해서 버튼의 id값을 갖고오는데요. 보게되면 int값으로 저장하는 것을 볼 수 있습니다.
즉, 우리가 xml에서 작성한 id값을 java코드에서 갖고올때 문자열이 원형으로 갖고 오는것이 아니라, 구분할 수 있는 특정한 숫자값으로 갖고 온다는 것을 추측할 수 있습니다.
이렇게 갖고온 값은 R.id.btn 의 값과 동일합니다.
따라서 위와같은 방식으로 버튼을 구분할 수 있습니다.
다음으로는 라디오 버튼과 체크박스 위젯을 알아보겠습니다.
'프로그래밍 > 안드로이드 - 이론' 카테고리의 다른 글
[안드로이드 9.+] 4. Android Layout - with Java (0) | 2019.07.06 |
---|---|
[안드로이드 9+] 3. Android Activity관련 메서드 - with Java (0) | 2019.07.05 |
[안드로이드 9.+] 2. Android 기본요소 - with Java (0) | 2019.07.05 |
[안드로이드 9.+] 1. Android 입문 & 개발환경 구성 - with Java (0) | 2019.07.05 |