[5팀] 코틀린 안드로이드 기초강의_18~21 | 에디트텍스트, 라디오그룹&버튼
이 글은 이것이 안드로이드다 with 코틀린(개정판)를 참고하여 작성하였습니다.
작성자 : 조성현
개발환경은Mac.os, Android Studio입니다.
1. 크기 , 색상, 글씨체 .
1.디자인 모드에서
안그로이드 스튜디오 / activity_main.xml 파일을 열어 우측 상단 디자인 모드로 만들어준다.
디자인모드에서 매번 설정하는것 보단, 리소스 value 의 string.xml 에 원하는 요소의 아이디와 그에 대응하는 값을 생성 한 후 관리 하는 것이 더 효율적이며 실수를 방지 할 수 있다고 한다.
2. 리소스 파일 활용
Button 의 크기를 리소스 파일에 저장한 값을 이용하여 바꿔 보자.
project 폴더를 보면 개발에 필요한 객채의 이름들을 저장한 리소스 파일이(res) 있다.
텍스트와 관련된 리소스들은 프로젝트 생성시 sting.xml 이 자동 생성이 되어 바로 사용하면 되지만,
Dimen 은 Sting 과 다르게 미리 정의 되지 않아 resource folder > values에서 직접 생성 해줘야한다.
activity_main.xml 파일 에서 디자인 모드 > 변경하고 싶은 요소 검색.
@파일/이름 순으로 호출 하여 저장한 값을 넣어준다.
이번에는 디자인 모드에서 직접 색상을 정하는 것이 아닌 colors.xml 에 색상을 저장하여 사용해본다.
방식은 위와 같이 values 폴더에 colors.xml 에 이름,색상 을 저장후 호출한다.
activity_main.xml 의 code 모드나 split 모드를 확인한면 다음과 같다.
강의 영상에서 나온것과 같이 디자인에서 attribure 들을 설정해줘도 되지만 위의 사진과 같이 코드로 적는 것이 더 효율적이며 수정에 용의 하다.
Tesxt view / string xml 코드 수정
“hello” -> “hello \n nice to meet you”
줄 바꿈 기호로 \n 을 쓴다
여러줄을 한줄로 바꾸고 싶을때
android:singleLine="true"
출력하는 글자의 최대수를 5로 할려면 다음과 같이 입력한다.
android:maxLength="5"
그외,
문장의 생략 ellipsize,
android:ellipsize="start"
글꼴 fontFamily
android:fontFamily="sans-serif-black"
이와 같이 다양한 attribute 가 있어 텍스트의 색상, 글자수,크기,폰트 , 사이즈 등을 개발자다 원하는 방식으로 수정을 할 수 있다.
2.View binding 사용 (EditText)
사용자가 입력한 문자열이 바로 보이게 만드는 기능과 , 이미 적혀있는 글을 사용자가 수정하는 위젯을 만들것이다.
view binding 이란 안드로이드에서 위젯에 프로그램으로 접근하는 방식이다.
View Binding을 사용하기 위해서는 "build.gradle (Module: EditText.app)" 파일에 다음과 같이 추가를 한다.
activity_main.xml 에서 plain text 를 추가해 준후 , id 칸에 editText 라 적어준다.
1.
MainActivity.kt 에서 Main activity 에 Activity 가 가지고 있는 property 를 넘기는 코드를 작성한다.
lazy는 선언과 동시에 초기화를 하며 var 를 사용 할수 없다.
ActivityMainBinding 객체의 변수를 선언하며. binding 이라는 변수를 사용해서 위젯에 접근할 수 있게 한다.
val binding by lazy { ActivityMainBinding.inflate(layoutInflater) }
var을 사용하는 방식으로 lateint 가 있다.
2.
//setContentView(R.layout.activity_main) -> 기존 set content view 는 res 호출한다.
setContentView(binding.root)
Content View는 binding의 root 뷰이다.
= binding 에 있는 화면을 쓴다 라는 의미 이다.
사용자가 화면에 적힌 hello world 대신 실시간으로 입력을 넣는 방법 ?
답: id : textView 에다가 editable 값을 넣어 주면 된다.
edittext 와 edittext changedlistner 만 잘써도 실시간으로 두개의 위젯을 컨트롤 할 수있다.
3.RadioGroup,Radio Button
다음과 같이 사용자에게 목록에서 원하는것을 선택하는 위젯을 만들것이다.
View Binding을 사용하기 위해 "build.gradle (Module: ~.app)" 파일에 하단 코드를 추가한다.
activity _main.xml 파일에 버튼-> 라디오 그룹을 추가한 후 라디오 버튼을 3개 만든후 각각 id 와 텍스트를 입력한다.
레이아웃을 만들었으면 아까와 같이 bindging을 사용할 수있게 MainAcitvity코틀린 파일에 다음과 같이 코드를 추가한다.
사용자에게 입력받은 선택 사항 , 즉 체크한 radio button의 id 를 받는 기능은 다음과 같이 구현 한다.
binding.radioGroup.setOnCheckedChangeListener { group, checkedid -> }
Checkedid 즉 버튼이 선택된 사항에 따라 다른 동작을 하기위해 when 문을 사용해준다.