GDSC HUFS 3기/Android with Kotlin Team 5

[5팀] 코틀린 안드로이드 기초강의_18~21 | 에디트텍스트, 라디오그룹&버튼

sung.hyun.1204 2021. 10. 29. 22:35

이 글은 이것이 안드로이드다 with 코틀린(개정판)를 참고하여 작성하였습니다.

작성자 : 조성현

개발환경은Mac.os, Android Studio입니다. 

1. 크기 , 색상, 글씨체 .

 

1.디자인 모드에서

안그로이드 스튜디오 / activity_main.xml 파일을 열어 우측 상단 디자인 모드로 만들어준다.

 

좌측 하단 componet_tree 에서 constarintLayout을  클릭한다.
Design 하단에 search 를 이용하여 다음 과 같은 요소들을 검색한후 설정해준다.

 

 

textColor 를 검색후 우측 상자를 클릭하여 색상을 지정해준다.
마찬가지로 text stlye 을 검색한후 원하는 텍스트 스타일을 설정할수 있다.

 

 

텍스트 사이즈는  dp 단위가 아닌 sp 단위를 사용한다.

 

디자인모드에서 매번 설정하는것 보단, 리소스 value 의 string.xml 에 원하는 요소의 아이디와 그에 대응하는 값을 생성 한 후 관리 하는 것이 더 효율적이며 실수를 방지 할 수 있다고 한다.

 

 

 

2. 리소스 파일 활용

Button 의 크기를 리소스 파일에 저장한 값을 이용하여 바꿔 보자. 

 

project 폴더를 보면 개발에 필요한 객채의 이름들을 저장한 리소스 파일이(res) 있다.

텍스트와 관련된 리소스들은 프로젝트 생성시 sting.xml  이 자동  생성이 되어 바로 사용하면 되지만,

Dimen 은 Sting 과 다르게 미리 정의 되지 않아 resource folder > values에서 직접 생성 해줘야한다. 

 

project > res>values>new >Values Resource FILE

 

 

파일 이름  dimes 입력후 ok 클릭

 

방금 성한 dimes.xml 에 다음과 같은 코드를 적어준다.

activity_main.xml  파일 에서 디자인 모드 > 변경하고 싶은 요소 검색.

@파일/이름 순으로 호출 하여 저장한 값을 넣어준다.

50 sp 가 들어간다

 

100dp 가 들어간다

 

이번에는 디자인 모드에서 직접 색상을 정하는 것이 아닌 colors.xml 에 색상을 저장하여 사용해본다.

방식은 위와 같이 values 폴더에 colors.xml 에  이름,색상 을 저장후 호출한다.

 

 

 

activity_main.xml 의 code 모드나 split 모드를 확인한면 다음과 같다.

amdroid:alpha 는 버튼 의 투명도를 나타낸다.

강의 영상에서 나온것과 같이 디자인에서 attribure 들을 설정해줘도 되지만 위의 사진과 같이 코드로 적는 것이 더 효율적이며 수정에 용의 하다.

 

Tesxt view / string xml 코드 수정 

“hello” -> “hello  \n nice to meet you”

줄 바꿈 기호로 \n 을 쓴다

여러줄을 한줄로 바꾸고 싶을때

android:singleLine="true"   

 

sing 맘 처도 안드로이드 스튜디오가 자동완성을 도와준다.

 

출력하는 글자의 최대수를 5로 할려면 다음과 같이 입력한다.

android:maxLength="5"

 

“hello  \n nice to meet you” 중hello 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 에 있는 화면을 쓴다 라는 의미 이다.

 

 

edit text 자체가 it 라고 넘어와서 반환되는 것이다.

 

가독성을 위해 text 를 추가 했다

 

에뮬레이터를 돌려보면 입력한 값들이 바로 보이는 것을 확인이 가능하다.

사용자가 화면에 적힌 hello world 대신  실시간으로 입력을 넣는 방법 ?

답:    id : textView 에다가 editable 값을 넣어 주면 된다.

 

activity_main.xml의 디자인에서 hello world가 적힌 위젯의  아이디를 확인한다.

 

textView.text 에 editable을 문자열로 받아 넘겨준다.

 

우리가 입력한값의 textview 위젯에 적용 되는 것을 확인 할 수있다. 

edittext 와 edittext changedlistner 만 잘써도 실시간으로 두개의 위젯을 컨트롤 할 수있다.

 

 

 

 

 

3.RadioGroup,Radio Button

다음과 같이 사용자에게 목록에서 원하는것을 선택하는 위젯을 만들것이다.

 

RadioButton은 주로 RadioGroup 내에 존재한다.

 

View Binding을 사용하기 위해 "build.gradle (Module: ~.app)"  파일에 하단 코드를 추가한다.

activity _main.xml 파일에 버튼-> 라디오 그룹을 추가한 후 라디오 버튼을 3개 만든후 각각 id 와 텍스트를 입력한다.

   android:orientation="horizontal"  추가시 가로로 버튼이 정렬된다 !

 

레이아웃을 만들었으면 아까와 같이 bindging을 사용할 수있게 MainAcitvity코틀린 파일에 다음과 같이 코드를 추가한다.

 

사용자에게 입력받은 선택 사항 , 즉 체크한 radio button의 id 를 받는 기능은 다음과 같이 구현 한다.

 

binding.radioGroup.setOnCheckedChangeListener { group, checkedid -> }

 

Checkedid 즉 버튼이 선택된 사항에 따라 다른 동작을 하기위해 when 문을 사용해준다.