2016-03-28 15 views
0

私はこれを正しく説明したいと思います。基本的には、左側にナビゲーションバーを持つ基本的なAndroidアプリがあります。コンテンツページのレイアウトは、選択した内容に基づいて変更しようとしています。Androidで複数のレイアウトを参照する方法は?

私がしたことは、アプリケーションのメインレイアウトに両方のレイアウトを含めることでしたが、ナビゲーションバーから選択しようとすると、レイアウトは互いの上にあります。

私はそれらのお互いの上に横たえないようにするためのポインタを得ることができますか?私はこれに正しくアプローチしていますか?

は、ここに私のxmlです:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true" 
    tools:context="com.test.justforfun.MainActivity"> 

    <android.support.design.widget.AppBarLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/AppTheme.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:popupTheme="@style/AppTheme.PopupOverlay" /> 

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

    <include layout="@layout/content_main" /> 
    <include layout="@layout/content_second"/> 

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

使用ナビゲーションバー –

答えて

0

ショー1つのレイアウト1時間、そしてあなたがSTHを選択したときに別のものを示しています。

0

レイアウトを非表示にする必要がある場合は、可視性をGONEに設定します。あなたがそれを見せたいときはもう一度VISIBLEに戻ってください。

0

レイアウト/ビューを隠して表示する代わりに、フラグメントを使用する必要があります。ナビゲーションバーにリスナを設定し、FragmentManagerを使用して現在のフラグメントを置き換えます。

private void setupDrawerContent(NavigationView navigationView) { 
    navigationView.setNavigationItemSelectedListener(
      new NavigationView.OnNavigationItemSelectedListener() { 
       @Override 
       public boolean onNavigationItemSelected(MenuItem menuItem) { 
        selectDrawerItem(menuItem); 
        return true; 
       } 
      }); 
} 

public void selectDrawerItem(MenuItem menuItem) { 
    // Create a new fragment and specify the fragment to show based on nav item clicked 
    Fragment fragment = null; 
    Class fragmentClass; 
    switch(menuItem.getItemId()) { 
     case R.id.nav_first_fragment: 
      fragmentClass = FirstFragment.class; 
      break; 
     case R.id.nav_second_fragment: 
      fragmentClass = SecondFragment.class; 
      break; 
     case R.id.nav_third_fragment: 
      fragmentClass = ThirdFragment.class; 
      break; 
     default: 
      fragmentClass = FirstFragment.class; 
    } 

    try { 
     fragment = (Fragment) fragmentClass.newInstance(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    // Insert the fragment by replacing any existing fragment 
    FragmentManager fragmentManager = getSupportFragmentManager(); 
    fragmentManager.beginTransaction().replace(R.id.flContent, fragment).commit(); 

    // Highlight the selected item has been done by NavigationView 
    menuItem.setChecked(true); 
    // Set action bar title 
    setTitle(menuItem.getTitle()); 
    // Close the navigation drawer 
    mDrawer.closeDrawers(); 
} 

ソース:フラグメントおよびツールバーとhttps://guides.codepath.com/android/Fragment-Navigation-Drawer

関連する問題