1

현재 재질 디자인 사양을 따르기 위해 탐색 서랍을 설정하고 있습니다. 나는 Chris Banes post (Material design checklist에서 사용 가능)을 이미 검사했고 사용자 정의 테마 등등에 나열된 모든 구현을 만들었으며 this question도 만들었지 만 그 중 어느 것도 내 앱 구조의 요구 사항을 충족시키지 못하는 것 같습니다.상태 표시 줄 아래의 머티리얼 디자인 서랍 : 두 개의 FrameLayouts가 하위 인 DrawerLayout을 사용하여 어떻게 구현합니까?

당신은 제목에서 짐작으로 DrawerLayout 어린이로 두 FrameLayout의를 가지고있다 : (내가 필요하기 때문에 나는이 구조를 변경할 수 있음을 지적하는 것이 중요 내용에 대한 하나 서랍의 또 다른 NavigationDrawer의 내용을 업데이트하여 조각을 주요 내용으로 교환 할 수있는 능력을 유지하는 것).

문제는 예상되는 디자인을 달성하기 위해 모두를 엉망으로하지 않고 XML의 도구 모음 선언을 넣어 어디 DrawerLayout두 아이을 필요로하기 때문에 내가 모르는 지금이다.

activity_main.xml는

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/drawer_layout" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="com.myapp.MainActivity" 
android:fitsSystemWindows="false"> <!-- Setting this one to true makes the status bar to have a non-transparent shitty background --> 

<!-- 
    As the main content view, the view below consumes the entire 
    space available using match_parent in both dimensions. 
--> 

<FrameLayout 
    android:id="@+id/container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <android.support.v7.widget.Toolbar 
     xmlns:app="http://schemas.android.com/apk/res-auto" 
     android:id="@+id/toolbar" 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent" 
     android:minHeight="?attr/actionBarSize" 
     android:background="?attr/colorPrimary" 
     app:theme="@style/ThemeOverlay.AppCompat.ActionBar" /> 

    </FrameLayout> 

<com.myapp.widget.ScrimInsetsFrameLayout 
    android:id="@+id/navigation_drawer" 
    android:layout_width="@dimen/navdrawer_width" 
    android:layout_height="match_parent" 
    android:layout_gravity="start" 
    android:fitsSystemWindows="true"/> 
</android.support.v4.widget.DrawerLayout> 

이 결과를 제공합니다 : 당신이 볼 수 으로, 상태 표시 줄 내용이 전체 화면으로 그려되기 때문에 (? 어쩌면 맞습니다)이 완전히없는 것 같다. 앱이 시작되면 툴바가 그려지고 (staus bar 패딩없이 렌더링되어 시스템 아이콘이 엉망이됩니다)지도 콘텐츠가 갑자기 오버레이됩니다. 현재 Android 4.4.4를 실행 중이지만 Android 5.0이있는 에뮬레이터에서와 동일합니다. 이 도구 모음과 DrawerLayout와 루트 LinearLayout을 넣어 제안 된 또 다른 유래 질문에

App running on Android 4.4.4. CM11

하지만, 고체 비와 같은 제대로 도구 모음을 렌더링하지만 상태 표시 줄에 이상한 결과, (초래 - 투명 배경). 또한 FrameLayout을 루트로 사용하려고 시도했지만 결과가 좋지 않습니다.

이 문제를 해결하는 방법에 대한 조언이 있으십니까? 컨테이너가 someLayout에 툴바 아래있는 LinearLayout

내가 레이아웃의 일부 인수를 ommited하지만 그 시점이 아니기 때문에

+0

활동 테마/스타일이 무엇입니까? –

+0

그것의 또한 Theme.AppCompat.Light.NoActionBar와 <항목 이름 = "windowActionBar"> 거짓, <항목 이름 = "windowActionModeOverlay"> 사실, 그리고 <항목 이름 = "안드로이드 : windowTranslucentStatus"> values-에 대한 사실 v19. – fiipi

+0

"NoActionBar"테마를 사용하고 있지만 ActionBar/ToolBar를 갖고 싶습니까? 그래서 "Theme.AppCompat.Light.DarkActionBar"를 사용하십시오. 즉, –

답변

1
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/drawer_layout"> 

<LinearLayout 
    android:id="@+id/someLayout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <android.support.v7.widget.Toolbar 
     xmlns:app="http://schemas.android.com/apk/res-auto" 
     android:id="@+id/toolbar" 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent" 
     android:minHeight="?attr/actionBarSize" 
     android:background="?attr/colorPrimary" 
     app:theme="@style/ThemeOverlay.AppCompat.ActionBar" /> 
    <FrameLayout android:id="@+id/container"></FrameLayout> 

</LinearLayout> 

<com.myapp.widget.ScrimInsetsFrameLayout 
    android:id="@+id/navigation_drawer" 
    android:layout_width="@dimen/navdrawer_width"/> 
</android.support.v4.widget.DrawerLayout> 

지금 당신은, R.id.container에 조각을 변경해야 .

+0

감사합니다.이 솔루션은 툴바를 올바르게 표시하고 NavigationDrawer가 툴바와 올바르게 겹칩니다. 그러나 문제가 있습니다. 렌더하기 전에 모든 것을 화면에 너무 많이 렌더링합니다. 시스템 상태 표시 줄 패딩을 고려하지 않고 모든 것! ? – fiipi

+1

나는 마침내 어딘가에 수정 프로그램을 만들었습니다. 나는이 질문을 여기서 확인했습니다. http://stackoverflow.com/questions/20557869/translucent-navigation-without-layout-displaying-beneath-status-bar, 알아 냈습니다. FrameLayout으로 모든 것을 래핑하고 fitsSystemWindows = "true"(ScrimInsetsFrameLayout은 물론)로 설정하면 모든 것이 올바르게 렌더링됩니다. 이제 상태 표시 줄의 색상에 몇 가지 문제가 있습니다.하지만 그건 또 다른 이야기입니다 ... 어쨌든 고마워요! – fiipi