[coding] 코딩 공부하자/[안드로이드]

[Android][Kotlin] 코틀린 키보드 제어 - 내리기, 올리기 (키보드 형, 이제 사라져!)

찰스_ 2020. 10. 27. 19:40
728x90
반응형

안녕하세요. 찰스입니다!

안드로이드 키보드+화면 설정모바일 키보드와 View 상호 설정으로 키보드 나타나게 설정은 했는데, 이젠 또 안 없어져서 은근 거슬리더군요.

키보드 제어는 빌드가 필요해서 안드로이드 개발언어인 코틀린(kotlin)과 자바(java) 버전 2개로 준비 해봤습니다!

Kotlin을 주 언어로 개발하여, java는 참고만 하실 수 있게 업로드 해놓을께요!


[다음글] [Android][Java] 모바일 소프트 키보드 제어 - 내리기, 올리기

 

[Android][Java] 모바일 소프트 키보드 제어 - 내리기, 올리기

안녕하세요. 찰스입니다! 키보드 제어는 빌드가 필요해서 안드로이드 개발언어인 코틀린(kotlin)과 자바(java) 버전 2개로 준비 해봤습니다! Kotlin을 주 언어로 개발하여, java는 참고만 하실 수 있게

charlesstory.tistory.com


[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.ktshowKeyboard 메서드 추가 (★ 반드시 EditText를 바라보게 해야 키보드가 올라옵니다.)

키보드 show(올리기)는 getSystemServiceshowSoftInput 메서드를 사용합니다.

 

그 외 다른 기능들은 각 자 구현하려는 기능에 따라 커스텀 하시길 바랍니다~

728x90
반응형