2017-12-13 9 views
1

最近私のアプリのメイン画面にナビゲーションドロワーが実装されました。何らかの理由で、小さな灰色(または透明な黒色)のバーがその上にレンダリングされています。
スクリーンショット:ナビゲーションドロワーに灰色のバーが表示されます

Screenshot

レイアウトコード:

<android.support.design.widget.CoordinatorLayout 
... > 

    <LinearLayout 
     ... > 

     <android.support.design.widget.AppBarLayout 
      android:id="@+id/appbar" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:paddingTop="@dimen/appbar_padding_top" 
      android:theme="@style/AppBarOverlay"> 

      <android.support.v7.widget.Toolbar 
       android:id="@+id/toolbar" 
       android:layout_width="match_parent" 
       android:layout_height="?attr/actionBarSize" 
       android:background="?attr/colorPrimary" 
       app:layout_scrollFlags="scroll|enterAlways" 
       app:popupTheme="@style/PopupOverlay"/> 

     </android.support.design.widget.AppBarLayout> 

     <android.support.v4.widget.DrawerLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:id="@+id/drawer_layout"> 

      <fragment 
       ... /> 

      <android.support.design.widget.NavigationView 
       android:layout_width="wrap_content" 
       android:layout_height="match_parent" 
       android:id="@+id/navigation" 
       android:layout_gravity="start"> 

       <ListView 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:id="@+id/list_nav"/> 

      </android.support.design.widget.NavigationView> 

     </android.support.v4.widget.DrawerLayout> 

    </LinearLayout> 

    <android.support.design.widget.FloatingActionButton 
     ... /> 

</android.support.design.widget.CoordinatorLayout> 

Javaの部分は自分のジェネリックリスト充填のものです。より多くのコードが必要な場合はお知らせください。

この奇妙なバーを削除するにはどうすればよいですか?

+3

あなたのツールバーから来たのかもしれません。あなたの質問を編集し、ツールバーのXMLコードを追加してください。 –

+0

なぜ 'NavigationView'の中に' ListView'がありますか?これは、「NavigationView」がどのように使用されるかではありません。これは、 'menu'リソースから独自のリストを提供します。リストは 'ListView'のスクリーンショットに表示されていますか、それとも' NavigationView'のメニューですか? –

+0

おそらくそれは水平スクロールバーです... –

答えて

1

NavigationViewは、提供されたリソースから独自の内部構造を構築する非常に特殊化されたViewGroupです。それは通常のViewGroupとして使用されることを意味しません。つまり、レイアウトXMLまたはコードのいずれかに、子オブジェクトViewが直接追加されることを意味しません。

子供を手動で追加すると致命的なエラーは発生しないため、これはすぐにはわかりません。 Androidスタジオの最近のNavigation Drawerテンプレートでは、DrawerLayoutにデフォルトの引き出しViewとしてNavigationViewが使用されていますが、引き出しがNavigationViewであることが必須ではないという兆候はありません。引き出しは実質的にはViewまたはViewGroupのいずれの種類でもかまいません。

この場合、影は明らかにNavigationViewの内部のものから来ています。しかし、その特殊な機能のいずれにも使用されていないので、NavigationViewは完全に削除することができ、ListViewは単独で引き出しとして機能することができます。

<NavigationView>要素とそれに関連するコードを削除するだけです。ドロワーとしてListViewを設定するには、そのlayout_gravity属性をstartに設定し、そのlayout_widthを正確な値に設定します。例えば、240dpである。

関連する問題