Notice
Recent Posts
Recent Comments
Link
투케이2K
61. (AndroidStudio/android/java) setOnFocusChangeListener 사용해 editText 포커스 관리 실시 - hint 활성 및 비활성 처리 본문
Android
61. (AndroidStudio/android/java) setOnFocusChangeListener 사용해 editText 포커스 관리 실시 - hint 활성 및 비활성 처리
투케이2K 2021. 2. 25. 08:37/* =========================== */
[ 개발 환경 설정 ]
개발 툴 : AndroidStudio
개발 언어 : java
/* =========================== */
/* =========================== */
[소스 코드]
// ======= [AndroidManifest.xml 파일] =======
<activity
android:name=".A_Main"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustPan"/>
<!-- 1) android:screenOrientation="portrait" 항상 앱 화면을 세로 표시하겠다-->
<!-- 2) android:windowSoftInputMode="adjustPan" 키보드에 의해 EditText 가 가려지지 않도록 위쪽으로 이동하겠다-->
// ======= [A_Main 액티비티] =======
//TODO [전역변수 선언]
EditText name;
EditText phone;
//TODO [컴포넌트 매칭]
name = (EditText)findViewById(R.id.name);
phone = (EditText)findViewById(R.id.phone);
//TODO [editText 포커스 관리]
name.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(hasFocus){ //TODO 포커스가 활성화 된 경우
name.setHint(""); //힌트 초기화 실시
}
else { //TODO 포커스가 비활성화 된 경우
String value = name.getText().toString();
if(value.length() <= 0 && value.equals("") == true){ //널일경우
name.setHint("실명을 입력하세요");
}
}
}
});
phone.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(hasFocus){ //TODO 포커스가 활성화 된 경우
phone.setHint(""); //힌트 초기화 실시
}
else { //TODO 포커스가 비활성화 된 경우
String value = name.getText().toString();
if(value.length() <= 0 && value.equals("") == true){ //널일경우
phone.setHint("연락처를 입력하세요");
}
}
}
});
//TODO [ 외부 바깥 레이아웃 클릭 시 키보드 내림 ]
@Override
public boolean dispatchTouchEvent(MotionEvent event){
int action = event.getAction();
switch(action){
case(MotionEvent.ACTION_DOWN):
//======창 내리는 용도======
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(name.getWindowToken(), 0);
imm.hideSoftInputFromWindow(phone.getWindowToken(), 0);
//======================
break;
case(MotionEvent.ACTION_MOVE):
break;
default:
break;
}
return super.dispatchTouchEvent(event);
}
// ======= [xml 레이아웃 파일] =======
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:focusable="true"
android:focusableInTouchMode="true"
android:id="@+id/parent">
<!-- [editText 사용시 자동 포커스 활성 방지]-->
<!-- android:focusable="true"-->
<!-- android:focusableInTouchMode="true"-->
<!-- android:id="@+id/parent"-->
<EditText
android:id="@+id/name"
android:layout_width="match_parent"
android:layout_height="60dp"
android:text=""
android:textColor="#ffffff"
android:textStyle="bold"
android:textSize="20dp"
android:gravity="center"
android:hint="실명을 입력하세요"
android:background="#444444"
android:singleLine="true"
android:nextFocusDown="@+id/phone"/>
<!-- [editText 사용시 자동 포커스 활성 방지]-->
<!-- android:singleLine="true" : 한줄로만 표시하겠다-->
<!-- android:nextFocusDown="@+id/phone" : 엔터키 입력 시 포커스 이동-->
<EditText
android:id="@+id/phone"
android:layout_width="match_parent"
android:layout_height="60dp"
android:text=""
android:textColor="#ffffff"
android:textStyle="bold"
android:textSize="20dp"
android:gravity="center"
android:hint="연락처를 입력하세요"
android:background="#dddddd"
android:singleLine="true" />
</LinearLayout>
/* =========================== */
반응형
'Android' 카테고리의 다른 글
Comments