2013-04-24 1 views
1

jfeinstein10 - SlidingMenu를 사용하고 있습니다. 나는 일반 핸드셋을 사용하여 이미 구현했지만 타블렛에서 응용 프로그램을 시험해도 여전히 슬라이드 버튼을 보여줍니다. 나는 ResponsiveUI에서 튜토리얼을 따랐지만 메뉴는 여전히 숨어 있습니다. 태블릿을 사용할 때 영구히 표시되기를 바랍니다. 태블릿을 사용할 때 menu_frame.xml이 자동으로 호출되면 안됩니까? menu_frame이 null 인 경우 질문하는 부분에 주석을 달아 보았습니다. 그러나 타블렛에서 강제로 실행하도록 설정했지만 오류로 인해 menu_frame이 발견되지 않습니다. 나는 슬라이딩 메뉴가 실제로 어떻게 작동하는지 혼란 스럽다. 도와주세요! 어떤 아이디어로 태블릿에서 그렇게 행동하는 이유는 무엇입니까? 여기 내 소스 코드는 다음과 같습니다Android 슬라이딩 메뉴가 태블릿에서 작동하지 않습니다. 메뉴가 정상적인 핸드셋에서와 같이 작동합니다 (버튼 클릭 슬라이드).

BaseActivity.java

@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
getSupportActionBar().hide(); 
setContentView(R.layout.activity_base); 

// check if the content frame contains the menu frame 
if (findViewById(R.id.menu_frame) == null) {    
    setBehindContentView(R.layout.menu_frame); 
    getSlidingMenu().setMode(SlidingMenu.LEFT); 
    getSlidingMenu().setSlidingEnabled(true); 
    getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN); 
    getSlidingMenu().setBehindWidthRes(R.dimen.sidebar_default_width);   
} else { 
    // add a dummy view 
    Log.v("BaseActivity", "menu not null"); 
    View v = new View(this); 
    setBehindContentView(v); 
    getSlidingMenu().setSlidingEnabled(false); 
    getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_NONE); 
    getSlidingMenu().setBehindWidthRes(R.dimen.sidebar_no_width); 
} 

// set the Above View Fragment 
if (savedInstanceState != null) { 
    mContent = getSupportFragmentManager().getFragment(savedInstanceState, "mContent"); 
    mMenuPosition = savedInstanceState.getInt("menu_position");   
} 
if (mContent == null) { 
    mContent = new BirdsFragment(); 
    mMenuPosition = 0; 
} 

getSupportFragmentManager() 
    .beginTransaction() 
    .replace(R.id.content_frame, mContent) 
    .commit(); 

// set the Behind View Fragment 
getSupportFragmentManager() 
    .beginTransaction() 
    .replace(R.id.menu_frame, new MenuListFragment()) 
    .commit(); 

// customize the SlidingMenu 
SlidingMenu sm = getSlidingMenu(); 
    sm.setShadowWidthRes(R.dimen.shadow_width); 
    sm.setShadowDrawable(R.drawable.shadow); 
    sm.setBehindOffsetRes(R.dimen.slidingmenu_offset); 
    sm.setFadeDegree(0.35f); 
} 

레이아웃/activity_base.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     tools:context=".BaseActivity"> 

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

<FrameLayout 
    android:id="@+id/content_frame" 
    android:layout_below="@id/actionbar" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

레이아웃/menu_frame.xml

은3210
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/menu_frame" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

답변

1

나는 결국 대답을 얻었다. 물론 menu_frame은 마술처럼 추가 될 수 없습니다. menu_frame을 태블릿에 표시하려면 layout-large 및 layout-large-land에서 xml을 설정해야합니다.

관련 문제