레이아웃 파일과 텍스트파일을 분리하면 다국어지원, 모듈화에 효율적이므로 분리하는 걸 디폴트로 설정한다.
string.xml파일을 사용하여 효율을 높여보자.
처음 파일에 들어가면 앱 실행시 상단 바의 내용이 적혀있다.
<resources>
<string name="app_name">Practice_SampleWidget</string>
</resources>
구조를 보면 아래와 같다.
<string name = "변수이름">텍스트</string>
이렇게 만들어진 텍스트는
text속성(Attribute - text)에서 @string/변수이름(따옴표 제거)로 참조한다.
@string의 의미는 string파일을 링크한다는 의미로 보면 될 것 같다.
폰트변경은 layout파일의 Attribute - textFace에서 바꾸면 된다. 나 같은 경우에는 티스토리 스킨편집을 하다보니 이 속성이 비교적 익숙했다.
텍스트 뷰를 상속하기 때문에 위에서 얘기한 속성들을 그대로 사용할 수 있다.
위에서 부터 차례대로 라디오 버튼, 체크박스다. 라디오버튼은 라디오그룹안에 묶여서 들어가며 한 항목에만 체크를 할 수 있어서 이미 체크가 되어있는 상태에서 다른 항목을 체크할 경우 체크표시가 옯겨간다.
체크박스는 그냥 평소에 쓰던 기능 그대로이다.
버튼을 사용할 때 가장 많이 사용하게될 메서드인 setOnClickListener()를 살펴보자
button.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
Toast.makeText(getApplicationContext(), "버튼",Toast.LENGTH_LONG).show();
}
});
작동확인을 위해서 토스트메시지 호출을 넣어놨다.
onCreate함수 안에서 기능하며 onCreate밖에서 호출불가하다.
setOnClickListener를 사용하면 xml파일에서 onClick 속성을 건드릴 필요가 없어진다.
new View.OnClickListener()
이 부분이 인자로 들어가는데 아직 이것에 대한 내용을 잘 알지못한다.
자동완성을 람다식 replace를 실행했더니
button.setOnClickListener(v -> Toast.makeText(getApplicationContext(), "버튼",Toast.LENGTH_LONG).show());
v ->로 onClick함수까지 대체됐다. 람다식의 변환과정이 궁금해진다.
<EditText
android:id="@+id/userNameInput"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/hint"
android:inputType="text" />
입력 상자의 경우 android:hint 속성을 통해 텍스트 입력 전 표시할 내용을 기술 할 수 있다.
위젯은 PlainText이고 inputType으로 입력타입 설정하고 android:text = "입력내용"으로 입력받을 수 있다.
selectAllOnFocus 옵션을 켜두면 입력을 하려고 editText를 터치했을때 contents들이 전체선택된다. 커서이용의 다른 예이다.
TextChangedListener를 사용하면 현재입력하는 텍스트의 상태변화를 이용할 수 있다. 정확히는 TextWatcher 객체를 이용하는 건데 현재 글자 입력 수를 알 수 있다.
developer.android.com/reference/android/text/TextWatcher
"댓글, 공감 버튼 한 번씩 누르고 가주시면 큰 힘이 됩니다"