투케이2K

24. (AndroidStudio/android/java) editText-키보드 활성 시 ui 밀림 방지, 자동포커스 활성 방지, 엔터키 클릭 시 포커스 이동, 외부 영역 클릭 시 키보드 내림 본문

Android

24. (AndroidStudio/android/java) editText-키보드 활성 시 ui 밀림 방지, 자동포커스 활성 방지, 엔터키 클릭 시 포커스 이동, 외부 영역 클릭 시 키보드 내림

투케이2K 2021. 1. 27. 16:33

/* =========================== */

[ 개발 환경 설정 ]

개발 툴 : 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 num_textview;
EditText num_textview2;

//TODO [컴포넌트 매칭]
num_textview = (EditText)findViewById(R.id.num_textview);
num_textview2 = (EditText)findViewById(R.id.num_textview2);

//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(num_textview.getWindowToken(), 0);
			imm.hideSoftInputFromWindow(num_textview2.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/num_textview"
        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/num_textview2"/>
    <!--    [editText 사용시 자동 포커스 활성 방지]-->
    <!--    android:singleLine="true" : 한줄로만 표시하겠다-->
    <!--    android:nextFocusDown="@+id/num_textview2" : 엔터키 입력 시 포커스 이동-->

    <EditText
        android:id="@+id/num_textview2"
        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>

/* =========================== */

/* =========================== */

[요약 설명]

1) android:screenOrientation="portrait" 항상 앱 화면을 세로 표시하겠다

2) android:windowSoftInputMode="adjustPan" 키보드에 의해 EditText 가 가려지지 않도록 위쪽으로 이동하겠다

3) android:singleLine="true" : 한줄로만 표시하겠다

4) android:nextFocusDown="@+id/num_textview2" : 엔터키 입력 시 포커스 이동

5) 자동 포커스 활성 방지 : android:focusable="true", android:focusableInTouchMode="true"

/* =========================== */

반응형
Comments