2012-12-15 3 views
9

私のアプリケーションにSliding Menuを使用しようとしています。私のSony Xperia Sでは非常にうまく動作しますが、HTC Desire HDでアプリを起動しようとすると、メニューはジェスチャーで完全に開きますが、他のタッチイベントはブロックされ、トップビュー(ViewPager、スライドメニューはその背後にあります)スライディングメニューがタッチアップイベントを上部ビューでロックします

これを修正する方法を知っている人はいますか?

は(これは私がメニューを使用している方法です)、答えを与えるために参考になるかもしれませ:

onPageSelected()
private void initSlidingMenu() 
{  
    mSlidingMenu = new SlidingMenu(getApplicationContext()); 

    mSlidingMenu.setMode(SlidingMenu.LEFT); 
    mSlidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN); 
    mSlidingMenu.setShadowWidthRes(R.dimen.default_shadow_width); 
    mSlidingMenu.setShadowDrawable(R.drawable.defaultshadow); 
    mSlidingMenu.setBehindOffsetRes(R.dimen.default_behind_offset); 
    mSlidingMenu.setFadeDegree(0.35f); 
    mSlidingMenu.setMenu(firstPage); 
    mSlidingMenu.attachToActivity(this,SlidingMenu.SLIDING_CONTENT);  
} 

、私はメニューを無効にするか、それを可能にするので、メニューは唯一の左ページに表示されます:

@Override public void onPageSelected(int arg0) 
{ 
    ActivityCompat.invalidateOptionsMenu(this); 

    if (arg0 == Utils.DEFAULT_PAGE) 

     mSlidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); 

    else 

     mSlidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_NONE); 
} 

答えて

9

私はちょうどスライディングメニューは私のサムスンギャラクシーS2走行ICSではなく、ジンジャーブレッドを実行している私のHTCの欲望に細かい作業と同じ問題を抱えていました。

スライディングメニューを実装するのと同じ方法を使用しましたが、別の実装で問題が解決されています。

代わりに、手動での活動にメニューを取り付ける:

mSlidingMenu.attachToActivity(this,SlidingMenu.SLIDING_CONTENT); 

私はSlidingMenuライブラリからスライディング活動の一つで、私の活動を延長することにしました。私の場合、アクティビティは最初にFragmentActivityまで延長されましたが、SlidingFragmentActivity

onCreateメソッド内でbehindViewを設定する必要があります。そうしないと、アクティビティがクラッシュします。

setBehindContentView(R.layout.slidingmenu); //Replace with the layout of your menu 

問題を修正する必要があります。ここで

は、私の活動のサンプルコードです:

public class MainActivity extends SlidingFragmentActivity { 

SlidingMenu menu; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    // Main view layout for the activity 
    setContentView(R.layout.activity_listing); 

    // set the Behind View : REQUIRED (replace with your menu's layout) 
    setBehindContentView(R.layout.slidingmenu); 

    menu = getSlidingMenu(); 

    //Now you can customize your sliding menu if you want 
    menu.setMode(SlidingMenu.LEFT); 
    menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN); 
    menu.setShadowWidthRes(R.dimen.shadow_width); 
    menu.setShadowDrawable(R.drawable.slidingmenu_shadow); 
    menu.setBehindOffsetRes(R.dimen.slidingmenu_offset); 
    menu.setFadeDegree(0.35f); 

あなたはこのソリューションを使用すると、私はすべてのソースコードを解析していない

mSlidingMenu.setMenu(firstPage); 
mSlidingMenu.attachToActivity(this,SlidingMenu.SLIDING_CONTENT); 

を呼び出す必要はありませんのでご注意ます現在のattachToActivityメソッドはバグである場合があり、ライブラリが提供する特別なアクティビティを使用するとこれらのバグは表示されません。

EDIT: SlidingMenuライブラリとActionBarSherlock(ABS)で作業している人にはOKです。 まず、SlidingMenu libでABSが参照されていることを確認する必要があります。そうすれば、SlidingMenuが提供するアクティビティクラスをABSで拡張することができます。

例Iは、ABSやスライディングメニューの両方でFragmentActivityを使用する場合: あなたはあなたのアプリケーションで

class SlidingFragmentActivity extends SherlockFragmentActivity implements SlidingActivityBase 

そしてによってスライディングメニューライブラリに

class SlidingFragmentActivity extends FragmentActivity implements SlidingActivityBase 

を変更する必要があり、通常SlidingFragmentActivityを使用してください。ここで

は私のアプリのコードで、それは私が掲示いずれかのようしかし、ABSのサポートである:

public class MainActivity extends SlidingFragmentActivity { 

ActionBar mActionBar; 
SlidingMenu menu; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_listing); //Layout of the above view 

    /* 
    * ABS initialization 
    */ 
    mActionBar = getSupportActionBar(); 
    mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); 
    mActionBar.setDisplayHomeAsUpEnabled(true); 

    /* 
    * Sliding menu initialization 
    */ 
    menu = getSlidingMenu(); 
    menu.setMode(SlidingMenu.LEFT); 
    menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN); 
    menu.setShadowWidthRes(R.dimen.shadow_width); 
    menu.setShadowDrawable(R.drawable.slidingmenu_shadow); 
    menu.setBehindOffsetRes(R.dimen.slidingmenu_offset); 
    menu.setFadeDegree(0.35f); 

      /* This line initializes the way the sliding menu is working 
      if you set the boolean to true, the ActionBar will slide along with the content. 
      if you set to false, only the content will slide and the ActionBar will not move */ 
    setSlidingActionBarEnabled(true); 

    // set the Behind View 
    setBehindContentView(R.layout.slidingmenu); //Menu view 
+0

[OK]を、** SlidingActivityから延びる**完璧に動作しますが、私はcan'一つのことがあります行うべきこと:アクションバーはコンテンツと共にスライドする。どのようにメニューにそれを添付するには? –

+0

メニューのカスタマイズの後に 'setSlidingActionBarEnabled(true);'を呼び出すと、ActionBarがスライドします。この設定のデフォルト値はfalseです。そのため、コンテンツのみがスライドします。 – FabriceMk

+1

解決策があなたのために働いていれば答えを受け入れることができますか? – FabriceMk

関連する問題