안녕하세요. 찰스입니다!
안드로이드 키보드+화면 설정모바일 키보드와 View 상호 설정으로 키보드 나타나게 설정은 했는데, 이젠 또 안 없어져서 은근 거슬리더군요.
키보드 제어는 빌드가 필요해서 안드로이드 개발언어인 코틀린(kotlin)과 자바(java) 버전 2개로 준비 해봤습니다!
Kotlin을 주 언어로 개발하여, java는 참고만 하실 수 있게 업로드 해놓을께요!
[다음글] [Android][Java] 모바일 소프트 키보드 제어 - 내리기, 올리기
[Kotlin] 모바일 소프트 키보드 제어 - 내리기, 올리기
[Kotlin] 코드 샘플
1. AndroidManifast.xml
<activity
android:name=".MainActivity"
android:windowSoftInputMode="adjustResize">
...
</activity>
activity 옵션에 android:windowSoftInputMode="adjustResize" 추가
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"
>
...
</LinearLayout>
LinearLayout 옵션에 android:onClick="hideKeyboard" 추가
3. MainActivity.kt
class MainActivity : AppCompatActivity() {
// 1. 키보드 InputMethodManager 변수 선언
var imm : InputMethodManager? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// 2. 키보드 InputMethodManager 세팅
imm = getSystemService(android.content.Context.INPUT_METHOD_SERVICE) as InputMethodManager?
}
// 3. 이벤트 메서드 생성
// Activity 최상위 Layout의 onClick setting -> 해당 레이아웃 내 view 클릭 시 hideKeyboard 실행!
fun hideKeyboard(v: View){
if(v != null){
imm?.hideSoftInputFromWindow(v.windowToken, 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.kt
// Button onClick setting -> Button 클릭 시 showKeyboard 실행!
fun showKeyboard(v: View) {
// 주의사항 : keyboard는 EditText에서 사용하므로, 반드시 사용하려는 EditText가 포커싱 될 수 있게 파라미터 세팅해줘야 함.
// EditText ID = edtText
imm?.showSoftInput(edtText, 0)
}
위 MainActivity.kt에 showKeyboard 메서드 추가 (★ 반드시 EditText를 바라보게 해야 키보드가 올라옵니다.)
키보드 show(올리기)는 getSystemService의 showSoftInput 메서드를 사용합니다.
그 외 다른 기능들은 각 자 구현하려는 기능에 따라 커스텀 하시길 바랍니다~
'[coding] 코딩 공부하자 > [안드로이드]' 카테고리의 다른 글
[Android] 안드로이드 스튜디오 다운로드 & 설치 방법 (1) | 2021.03.09 |
---|---|
[Android][Java] 자바 키보드 제어 - 내리기, 올리기 (0) | 2020.10.27 |
[Android] 모바일 키보드와 View 상호 설정 (키보드 형, 화면 좀 가리지마!) (0) | 2020.10.27 |