2016-03-28 3 views
0

Надеюсь, я объясню это правильно. В основном у меня есть базовое Android-приложение с навигационной панелью слева, и я пытаюсь сделать макет изменения страницы содержимого на основе того, что я там выбираю.Как ссылаться на более чем 1 макет в 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

Показать один макет один раз, и показать другим, когда вы выбираете н.

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

Смежные вопросы