0

因此,我試圖在臭名昭着的滑出菜單中對我進行破解,如在G +和Youtube中。 在這個原因中,我設置了一個我想用來打開側面菜單的ActionBar UP按鈕。 我已經正確地佈置了所有的東西,但是當我詢問時,我的Horizo​​ntalScrollView不滑動。水平菜單滑出滾動不被稱爲

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <include 
     android:layout_width="wrap_content" 
     layout="@layout/side_menu" /> 

    <HorizontalScrollView 
     android:id="@+id/menu_scroll_view" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:fillViewport="true" 
     android:scrollbars="horizontal" > 

    <include 
     layout="@layout/main_content" /> 

    </HorizontalScrollView> 
</FrameLayout> 


private void toggleSideMenu() { 
    mMenuScrollView.postDelayed(new Runnable() { 

     @Override 
     public void run() { 
      int menuWidth = mSideMenu.getMeasuredWidth(); 
      if (!mIsMenuVisible) { 
       // Scroll to 0 to reveal menu 
       int left = 0; 
       mScrollView.smoothScrollTo(left, 0); 
      } else { 
       // Scroll to menuWidth so menu isn't on screen. 
       int left = menuWidth; 
       mScrollView.smoothScrollTo(left, 0); 
      } 
      mIsMenuVisible = !mIsMenuVisible; 

     } 
    }, 50); 

} 

我打電話給smoothScroll似乎沒有工作。

回答

0

我調整了一些例子,最終得到它的工作。比我在那裏看到的其他例子要多得多。 這工作正常,但我沒有MenuSliding的平滑動畫。我不需要Horizo​​ntalScrollView。作爲副作用,用戶將不得不點擊按鈕來彈出菜單。這將不具有幻燈片功能。

但是,這是一個BARE BONES示例,讓事情能夠順利進行。請享用!

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <!-- Base layout has id/side_menu --> 
    <include layout="@layout/side_menu" /> 


    <!-- Base layout has id/content --> 
    <include layout="@layout/content" /> 


</FrameLayout> 

這裏是我的活動

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

    setContentView(R.layout.main); 

    mContentView = findViewById(R.id.content); 
    mSideMenu = findViewById(R.id.side_menu); 
    mIsMenuVisible = false; 
} 

private void toggleSideMenu() { 
    if (mIsMenuVisible) { 
     mSideMenu.setVisibility(View.INVISIBLE); 
     mContent.scrollTo(0, 0); 
    } else { 
     int menuWidth = mSideMenu.getMeasuredWidth() * -1; 
     mSideMenu.setVisibility(View.VISIBLE); 
     mContentView.scrollTo(menuWidth, 0); 
    } 
    mIsMenuVisible = !mIsMenuVisible; 
}