2011-01-18 6 views
1

ユーザーはscreenLockを有効にするために画面上部にチェックボックスを表示したいのですが、オプションメニューを開いた場合にのみそのチェックボックスを表示します。 私はこれらの2つの方法 チェックボックスをクリックするとオプションメニューが閉じないようにする

@Override 
public boolean onMenuOpened(int featureId, Menu menu) { 
    checkbox.setVisibility(View.VISIBLE); 
    return super.onMenuOpened(featureId, menu); 
} 
@Override 
public void onOptionsMenuClosed(Menu menu) { 
    checkbox.setVisibility(View.GONE); 
    super.onOptionsMenuClosed(menu); 
} 

をoverridinbgことにより、これを行うことができるよしかし、私はそれをチェックするために、チェックボックスをタッチすると、メニューは、それ自体閉じて、私はそれを確認することができます前に、チェックボックスが表示されなくなります。

私の質問は単純です:チェックボックスをタッチするとオプションメニューが閉じないようにするにはどうしたらいいですか?

答えて

3

Androidのストックブラウザには、メニューが開いているときにクリックできるタイトルバーが表示されます。だから彼らの解決策もあなたの問題に合っているはずです。

タイトルバーはウィンドウマネージャを使用して示されている:

WindowManager manager = (WindowManager) getSystemService(Context.WINDOW_SERVICE); 

// Add the title bar to the window manager so it can receive touches 
// while the menu is up 
WindowManager.LayoutParams params 
     = new WindowManager.LayoutParams(
     ViewGroup.LayoutParams.MATCH_PARENT, 
     ViewGroup.LayoutParams.WRAP_CONTENT, 
     WindowManager.LayoutParams.TYPE_APPLICATION, 
     WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, 
     PixelFormat.TRANSLUCENT); 
params.gravity = Gravity.TOP; 
manager.addView(mFakeTitleBar, params); 

(メニューが閉じて、またはユーザーがクリックされた場合)、それを削除する

manager.removeView(mFakeTitleBar); 
関連する問題