我的活動將顯示一個ShowcaseView添加到裝飾視圖((ViewGroup) activity.getWindow().getDecorView()).addView(mShowcaseView);
,我想檢測關鍵事件來處理的東西,所以我重寫dispatchKeyEvent()
做我想要的。但似乎dispatchKeyEvent()
方法永遠不會被調用,更糟的是,PhoneWindow.DecorView#dispatchKeyEvent()
既不被調用,我不知道爲什麼,請幫助我。這裏爲什麼查看dispatchKeyEvent方法不被調用?
感謝。:)
是我ShowcaseView
簡單的源代碼。
public class ShowcaseView extends FrameLayout {
public ShowcaseView(Context context) {
super(context);
init(context);
}
public ShowcaseView(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
public ShowcaseView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context);
}
private void init(Context context) {
setWillNotDraw(false);
setDescendantFocusability(FOCUS_AFTER_DESCENDANTS);
setFocusable(true);
setEnabled(true);
}
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
Log.d("Showcase", "dispatchKeyEvent: called");
super.dispatchKeyEvent(event);
return executeKeyEvent(event);
}
private boolean executeKeyEvent(KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_UP
&& event.getKeyCode() == KeyEvent.KEYCODE_DPAD_CENTER) {
hide();
}
return true;
}
}
沒有人?對於瞭解該平臺的人來說,這不應該很難回答。 – SuperJMN