목차
1. strings.xml을 활용한 text뷰 문자열 속성 지정
2. 여러가지 text 속성 (색, 크기, 폰트 등)
3. 여러가지 button과 속성 (체크박스, 라디오 버튼, 이미지 버튼, scaleType 등)
4. drawable 폴더 추가 - 해상도 변경
5. TextView, EditText의 다양한 기능들
1. strings.xml을 활용한 text뷰 문자열 속성 지정
디자인 화면에서 문자열 입력하는 것보다 strings.xml파일(/app/res/values)에 문자열을 미리 작성한 다음 그 값을 text 속성에 지정하는 방법을 더 권장한다. (ex. 다중어 지원 시 언어별로 레이아웃 파일을 만드는 것보다는 strings.xml 파일을 만드는 것이 효율적.)
다국어를 지원하는 방식은 /app/res 폴더 안에 두개의 폴더를 만든 뒤 그 안에 strings.xml 파일을 각각 하나씩 넣는 거라고 한다. (그냥 아래와 같은 형태이다~라는 것만 알고 넘어가자.)
/app/res/
values-en/
strings.xml
values-ko/
strings.xml
strings.xml 파일에 다음과 같이 person_name 코드를 추가해주었다.
문제 상황 : textView의 text 속성에 @string/person_name을 입력했으나 아래와 같이 Error가 떴다.
문제 해결 : 속성 창에서 심볼을 못찾길래 그냥 activity_main.xml의 코드 부분에서 textView의 text 부분에 직접 입력했는데 해결됨. (왜 속성 창에서 안 된 건지는 모르겠다만..)
저렇게 strings.xml 파일에 정의된 문자열을 사용할 때는 @string/스트링명 으로 참조할 수 있다.
2. 여러가지 text 속성
- textColor : #AARRGGBB. AA는 Alpha로 투명하지 않음(FF), 투명함(00) 등을 설정할 수 있다.
- textSize : 폰트 크기. sp 단위를 권장함(단말의 해상도에 따라 크기 변경, 폰트 변경 시 동일하게 반영)
- textStyle : normal, bold, italic 등의 속성 지정 가능. | 를 사용하면 여러 속성값을 함께 지정 가능(| 앞뒤에 공백이 있으면 안됨) 근데 그냥 체크해도 됨
- typeFace : 폰트 설정. (오.. serif 폰트 쓰면 좀 공포게임 느낌 난다.)
- maxLines : 텍스트뷰에서 표시하는 문자열의 최대 줄 수 설정. n으로 설정시, n줄만큼만 화면에 표시되고 영역이 넘어가는 글자는 보이지 않는다.
3. 여러가지 button과 속성
버튼은 텍스트뷰를 상속하여 정의되어 있기 때문에 텍스트뷰의 속성을 그대로 가지고 있다. (위에서 나온 text, textColor 등)
CompoundButton 클래스
isChecked() : 체크 박스, 라디오 버튼이 선택되어 있는지 확인
setChecked(boolean checked) : 체크 상태 지정
toggle()
onCheckedChanged(CompoundButton buttonView, boolean isChecked) : 버튼의 상태가 바뀌는 것을 알고 싶을 때 재정의해서 사용
라디오 버튼 만들기
RadioGroup을 먼저 추가하고 RadioButton을 넣어서 항목을 추가해준다.
이미지 버튼 만들기
/app/res/drawable 폴더에 있는 이미지 파일을 버튼으로 사용한다. (이미지뷰랑 동일함. 버튼으로 쓰인다는 점만 빼면)
jpg보단 png를 권장함.
android:src 또는 app:srcCompat 속성으로 원본 이미지를 설정한다. (그냥 그렇다고.)
maxWidth, maxHeight : 이미지 최대 폭, 높이 설정
tint : 이미지 색상 설정
scaleType : 이미지뷰의 크기에 맞게 원본 이미지의 크기를 자동으로 늘리거나 줄임
셀럭터(Selector)를 활용하여 이미지 버튼의 눌린 상태와 눌리지 않은 상태를 구분 가능하게 만들 수 있다.
4. drawable 폴더 추가 - 해상도 변경
처음에는 /app/res/drawable 폴더만 기본적으로 존재한다. 그러나 아래와 같은 폴더명으로 직접 폴더를 추가할 시 해상도가 다르게 적용할 수 있다.
초고해상도
/app/res/drawable-xhdpi
/app/res/drawable-xxhdpi
/app/res/drawable-xxxhdpi
고해상도 (high)
/app/res/drawable-hdpi
중간 해상도 (middle)
/app/res/drawable-mdpi
저해상도 (low)
/app/res/drawable-ldpi
아래는 위 내용을 직접 씹고 뜯고 맛보고 즐긴 연습 사진.
5. TextView, EditText의 다양한 기능들
커서 관련 속성
selectAllOnFocus 속성을 true로 설정 : 포커스를 받을 때 문자열 전체가 선택됨 (사용자가 EditText를 선택할 때마다 전체내용을 수정할 수 있도록 편의 제공)
cursorVisible 속성을 false로 설정 : 커서가 보이지 않게 설정
커서를 이용하여 선택/복사/붙여넣기/잘라내기 등의 기능 만들기
getSelectionStart : 선택된 영역의 시작 위치 반환
getSelectionEnd : 선택된 영역의 끝 위치 반환
(위 두 메소드 모두 선택 영역이 없을 시 커서의 현위치를 반환함)
setSelection : 선택 영역을 지정
extendSelection : 선택 영역을 확장
selectAll : 전체 문자열 선택
자동 링크
autoLink 속성을 true로 설정 : 웹페이지 또는 이메일 주소를 링크 색상으로 표시, 링크를 누르면 접속하는 기능
줄 간격 조정
lineSpacingMultiplier : 줄 간격을 기본 줄 간격의 배수로 설정 (기본 값은 1.0이다. 1.0보다 작아지면 간격이 좁게 보임)
lineSpacingExtra : 줄 간격을 여유값으로 설정
대소문자 표시
capitalize : character(글자), words(단어), sentences(문장)등의 속성을 지정하여 해당하는 단위로 맨 앞 글자를 대문자로 표시할 수 있다.
줄임 표시
ellipsize : 입력한 내용의 생략 부분을 설정할 수 있음 (start, middle, end 값은 각각 앞부분, 중간부분, 뒷부분을 잘라서 보여줌. 디폴트 값인 none은 뒷부분을 자른다.)
편집 가능
editable 속성 값을 false로 설정 : EditText에 입력되어 있는 문자열을 편집하지 못하게 함 (디폴트는 true로 되어있음)
문자열 변경 처리 관련 속성
입력된 문자를 확인하거나 입력된 문자가 필요한 포맷과 맞는지 확인할 때 사용.
(근데 이거 이미 저번 예제(https://sand-to-desert.tistory.com/59) 때 해본거다. 아니 예제보다 이걸 나중에 알려주면 어떡함~)
addTextChangedListener(TextWatcher watcher)
위 메서드 사용 시 TextWatcher 객체를 설정할 수 있으며, TextWatcher 인터페이스에는 다음과 같은 메서드들이 정의되어 있음.
beforeTextChanged(CharSequence s, int start, int count, int after) : 문자열이 편집되기 전
afterTextChanged(Editable s) : 문자열이 편집된 후
onTextChanged(CharSequence s, int start, int before, int count) : 문자열이 편집되는 중
만약 입력된 문자열의 길이 값을 확인할 때는 setFilters 메서드를 사용해서 InputFilter 객체를 파라미터로 전달하고 이 객체의 LengthFilter 메서드를 호출하면 입력될 문자열의 길이 값을 설정할 수 있음.
-> 이건 근데 그냥 xml에서 EditText에 maxLength로 길이 값 설정할 수 있던데.. 뭔가 다른가.
어우 피곤해
밤샘하고 아까 낮잠 자긴 했는데 죽겠다
못 씻고 잘듯..
'TIL > 안드로이드 스튜디오' 카테고리의 다른 글
에러 (0) | 2024.11.25 |
---|---|
3장 드로어블 (0) | 2024.11.22 |
도전!4 - SMS 입력 화면 만들고 글자의 수 표시하기 (0) | 2024.11.20 |
도전!3 - 두 개의 이미지뷰에 이미지 번갈아 보여주기 (0) | 2024.11.18 |
2장 레이아웃 (0) | 2024.11.15 |