안녕하세요. 찰스입니다!
키보드 제어는 빌드가 필요해서 안드로이드 개발언어인 코틀린(kotlin)과 자바(java) 버전 2개로 준비 해봤습니다!
Kotlin을 주 언어로 개발하여, java는 참고만 하실 수 있게 업로드 해놓을께요!
여기는 Java 편 입니다!!!
[이전글] [Android][Kotlin] 모바일 소프트 키보드 제어 - 내리기, 올리기 (키보드 형, 이제 사라져!)
[Java] 모바일 소프트 키보드 제어 - 내리기, 올리기
[Java] 코드 샘플
1. AndroidManifast.xml
<activity
android:name=".MainActivity">
...
</activity>
activity 옵션 수정 없음. (Kotlin 버전과 비교하면서 보시면 키보드와 화면 공간 확보하는 부분이 다릅니다!)
2. activity_main.xml
<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"
tools:context=".MainActivity"
android:onClick="hideKeyboard"
>
<TextView>
...
</TextView>
<EditText>
...
</EditText>
<Button>
...
</Button
</LinearLayout>
LinearLayout 옵션에 android:onClick="hideKeyboard" 추가 (Kotlin 버전과 동일)
3. MainActivity.java
public final class MainActivity extends AppCompatActivity {
// 1. 변수 선언
private InputMethodManager imm;
private EditText editText;
private Button button;
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.activity_main);
// 2. 변수 세팅
imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
editText = findViewById(R.id.edtText);
button = findViewById(R.id.btnShow);
}
// 3. 이벤트 메서드 생성
// Activity 최상위 Layout의 onClick setting -> 해당 레이아웃 내 view 클릭 시 hideKeyboard 실행!
public final void hideKeyboard(View v) {
InputMethodManager var10000 = this.imm;
if (var10000 != null) {
var10000.hideSoftInputFromWindow(v.getWindowToken(), 0);
}
}
}
onCreate가 빌드되면서 InputMethodManager에서 참조하여 얻은 getSystemService를 사용할 수 있습니다. 키보드를 추적하기 위한 객체입니다. 이 객체를 통해 키보드 뿐만 아니라 다른 하드웨어를 관리 할 수 있습니다.
getSystemService의 hideSoftInputFromWindow 메서드를 호출해서 키보드를 hide(내리기) 할 수 있습니다.
반대로, 키보드 show(올리기)는 아래와 같습니다.
1. activity_main.xml
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button"
android:layout_margin="30dp"
android:layout_weight="0.5"
android:background="@color/colorAccent"
android:onClick="showKeyboard"
/>
위 activity_main.xml에 생성했던 Button의 옵션에 android:onClick="showKeyboard" 추가
2. MainActivity.java
// Button onClick setting -> Button 클릭 시 showKeyboard 실행!
public final void showKeyboard(View v) {
InputMethodManager var10000 = this.imm;
if (var10000 != null) {
// 주의사항 : keyboard는 EditText에서 사용하므로, 반드시 사용하려는 EditText가 포커싱 될 수 있게 파라미터 세팅 해줘야 함.
// EditText ID = edtText
var10000.showSoftInput(editText, 0);
}
}
위 MainActivity.kt에 showKeyboard 메서드 추가 (★ 반드시 EditText를 바라보게 해야 키보드가 올라옵니다.)
키보드 show(올리기)는 getSystemService의 showSoftInput 메서드를 사용합니다.
간단한 예제라서 Kotlin과 Java 버전으로 2가지 구현했습니다.
샘플 코드로 연습하시고 구현하려는 기능들에 응용하시면 좀 더 효율적일 것 같습니다!
2가지 버전으로 준비하려니 코드 세팅하는데 시간이 엄청 소요되네요 ㅜ.ㅜ
익숙해지겠지만, 복잡한 코드들은 Kotlin(일부러 Kotlin 공부 중)으로만 진행해야 할 듯 하네요 ㅋㅋㅋ 아무튼 지금까지 찰스였습니다.
'[coding] 코딩 공부하자 > [안드로이드]' 카테고리의 다른 글
[Android] 안드로이드 스튜디오 다운로드 & 설치 방법 (1) | 2021.03.09 |
---|---|
[Android][Kotlin] 코틀린 키보드 제어 - 내리기, 올리기 (키보드 형, 이제 사라져!) (0) | 2020.10.27 |
[Android] 모바일 키보드와 View 상호 설정 (키보드 형, 화면 좀 가리지마!) (0) | 2020.10.27 |