안드로이드에서는 키보드가 올라가고 내려갈때 콜백 이벤트 필요한 순간이 있을때


이 코드를 사용하시면 됩니다.


우선 구글링으로 찾은 이곳에서 SoftKeyboard 클래스의 용도를 확인합니다.


https://felhr85.net/2014/05/04/catch-soft-keyboard-showhidden-events-in-android/


안에 들어가 보시면 It is available here. 이라고 쓰인 곳을 누르면 SoftKeyboard.java를 다운받을 수 있도록 안내해 줍니다.


SoftKeyboard.java를 다운받고 프로젝트에 넣고 아래 소스를 넣어 줍니다.


TestAct.java


package com.example.testline;


import android.app.Activity;

import android.app.Service;

import android.os.Bundle;

import android.os.Handler;

import android.os.Looper;

import android.view.inputmethod.InputMethodManager;

import android.widget.LinearLayout;


public class TestAct extends Activity {

SoftKeyboard mSoftKeyboard;

LinearLayout mLlEdit;


@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);


mLlEdit = (LinearLayout) findViewById(R.id.ll_edit);


InputMethodManager controlManager = (InputMethodManager) getSystemService(Service.INPUT_METHOD_SERVICE);

mSoftKeyboard = new SoftKeyboard(mLlEdit, controlManager);

mSoftKeyboard.setSoftKeyboardCallback(new SoftKeyboard.SoftKeyboardChanged() {

@Override

public void onSoftKeyboardHide() {

new Handler(Looper.getMainLooper())

.post(new Runnable() {

@Override

public void run() {

// 키보드 내려왔을때

}

});

}


@Override

public void onSoftKeyboardShow() {

new Handler(Looper.getMainLooper())

.post(new Runnable() {

@Override

public void run() {

// 키보드 올라왔을때

}

});

}

});


}


@Override

public void onDestroy() {

super.onDestroy();

mSoftKeyboard.unRegisterSoftKeyboardCallback();

}


}



activity_main.xml 파일


     <LinearLayout

        android:id="@+id/ll_edit"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:focusable="true"

        android:focusableInTouchMode="true"

        android:orientation="horizontal" >

<TextView

          android:layout_width="80dp"

          android:layout_height="41.33dp"

          android:gravity="center_vertical"

          android:text="@string/visit_floor"

          android:textColor="@android:color/black"

          android:textSize="16.67sp" />


      <EditText

          android:id="@+id/EditText"

          android:layout_width="fill_parent"

          android:layout_height="41.33dp"

          android:layout_gravity="center"

          android:gravity="center"

          android:inputType="textAutoComplete"

          android:textSize="16.67sp" />

  </LinearLayout>


SoftKeyboard.java


728x90
반응형

+ Recent posts