2012-09-08 3 views
0
@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 


    // Checks whether a hardware keyboard is available 
    if (newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO) { 
     Toast.makeText(this, "keyboard visible", Toast.LENGTH_SHORT).show(); 
    } else if (newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_YES) { 
     Toast.makeText(this, "keyboard hidden", Toast.LENGTH_SHORT).show(); 
    } 
} 

런타임에 키보드 가시성을 감지하고 싶습니다. 위의 코드는 안드로이드 2.2에서 작동하지 않습니다. 키보드 이벤트 리스너에 대한 솔루션이 필요합니다. manifest.xmlAndroid 키보드 문제

+0

이 코드는 키보드 가시성이 아닙니다. –

답변

0

이의

나는 또한 추가 한 configChanges 속성은 안드로이드에 통증이 포인트입니다. 사용자 정의보기를 루트보기로 사용하고 onSizeChanged() + 레이아웃 변경의 차이를 사용하여 사용자 정의 콜백을 호출하는 리스너를 적용하려고합니다.

예제보기.

/** 
* Subclass of RelativeLayout that adds a size changed listener. This is useful for determining 
* when the onscreen keyboard has popped up and resized the window 
* 
*/ 
public class SCRelativeLayout extends RelativeLayout { 
    public interface OnSizeChangedListener { 
    public void onSizeChanged(int w, int h, int oldw, int oldh); 
    } 

    private OnSizeChangedListener mOnSizeChangedListener; 

    public SCRelativeLayout(Context context) { 
    super(context); 
    } 

    public SCRelativeLayout(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    } 

    public SCRelativeLayout(Context context, AttributeSet attrs, int defStyle) { 
    super(context, attrs, defStyle); 
    } 

    @Override 
    protected void onSizeChanged (int w, int h, int oldw, int oldh) { 
    super.onSizeChanged(w, h, oldw, oldh); 

    if (mOnSizeChangedListener != null) { 
     mOnSizeChangedListener.onSizeChanged(w, h, oldw, oldh); 
    } 
    } 

    public void setOnSizeChangedListener(OnSizeChangedListener listener) { 
    mOnSizeChangedListener = listener; 
    } 
} 
+0

우리의 활동 수업에서 작동하게 만드는 방법은 무엇입니까? – dilipkaklotar

+0

이 레이아웃을 레이아웃에서 루트보기로 만들고 onCreate에서 활동에 대해 정의 된 메소드를 사용하여 리스너 객체를 설정하십시오. 레이아웃이 변경되고 크기를 비교할 수있을 때 메소드를 호출합니다. – tsmith