2017-08-15 18 views
1

MainActivity内に3つのタブがあり、各タブにフラグメントが含まれているこの問題に直面しています。ドロワの下のアイテムをクリックして新しいフラグメントを開始すると、MainActivityのタブビューにオーバーラップします。Android:タブを含むMainActivityの下にある複数のフラグメントのオーバーラップ問題

Fragment currentFragment; 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, 
          @Nullable Bundle savedInstanceState) { 

     viewInflate = inflater.inflate(R.layout.fragment_city, container, false); 

     return viewInflate; 
    } 

    @Override 
    public boolean onNavigationItemSelected(MenuItem item) { 

     // Handle navigation view item clicks here. 
     Intent i; 
     int id = item.getItemId(); 

     if (id == R.id.nav_home) { 
      TabLayout tl = (TabLayout) findViewById(R.id.main_tabs); 
      tl.setVisibility(View.VISIBLE); 
      showFragment(new HomeFragment()); 
      setTitle(R.string.app_name); 
     } 
     if (id == R.id.nav_about_us) { 
      TabLayout tl = (TabLayout) findViewById(R.id.main_tabs); 
      tl.setVisibility(View.GONE); 
      showFragment(new AboutUsFragment()); 
      setTitle(R.string.about_us); 
     } 
     if (id == R.id.nav_favorites) { 
      TabLayout tl = (TabLayout) findViewById(R.id.main_tabs); 
      tl.setVisibility(View.GONE); 
      showFragment(new FavoritesFragment()); 
      setTitle(R.string.favorites); 
     } 
     if (id == R.id.nav_settings) { 
      i = new Intent(this, SettingsActivity.class); 
      startActivity(i); 
     } 

     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     drawer.closeDrawer(GravityCompat.START); 
     return true; 
    } 

    public void showFragment(Fragment fragment) { 

     if (currentFragment != null && fragment.getClass().equals(currentFragment.getClass())) 
      return; 

     currentFragment = fragment; 
     FragmentManager fragmentManager = this.getSupportFragmentManager(); 
     if (fragmentManager == null) 
      return; 

     FragmentTransaction ft = fragmentManager.beginTransaction(); 
     if (ft == null) 
      return; 

     ft.replace(R.id.content_frame, fragment).commitAllowingStateLoss(); 
    } 

は以下fragment_city.xml

<FrameLayout 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" 
    android:background="@color/content_background" 
    tools:context="com.creationjunkies.fragments.CityFragment"> 

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

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

      <android.support.v7.widget.RecyclerView 
       android:id="@+id/cityBargainsRecyclerView" 
       android:scrollbars="vertical" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent"/> 
     </android.support.v4.widget.SwipeRefreshLayout> 
    </RelativeLayout> 

</FrameLayout> 

のXMLコードであるとactivity_main.xmlコードは次のとおりです:以下は私のコードがある

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.DrawerLayout 
    android:background="@color/content_background" 
    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:id="@+id/drawer_layout" 
    android:fitsSystemWindows="true" 
    tools:openDrawer="start" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.creationjunkies.cities.MainActivity"> 

    <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"> 

     <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" 
       app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
       android:layout_width="match_parent" 
       android:layout_height="?attr/actionBarSize" 
       android:background="?attr/colorPrimary" 
       app:popupTheme="@style/AppTheme.PopupOverlay"> 

      </android.support.v7.widget.Toolbar> 

      <android.support.design.widget.TabLayout 
       android:id="@+id/main_tabs" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" /> 

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


     <LinearLayout 
      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" 
      app:layout_behavior="android.support.design.widget.AppBarLayout$ScrollingViewBehavior" 
      android:orientation="vertical"> 

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

      <FrameLayout 
       android:id="@+id/content_frame" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:layout_weight="1"> 

       <android.support.v4.view.ViewPager 
        android:id="@+id/tab_container" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        app:layout_behavior="android.support.design.widget.AppBarLayout$ScrollingViewBehavior" /> 

      </FrameLayout> 

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

     </LinearLayout> 

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

    <android.support.design.widget.NavigationView 
     android:id="@+id/nav_view" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     android:fitsSystemWindows="true" 
     app:headerLayout="@layout/nav_header_main" 
     app:menu="@menu/activity_main_drawer" /> 

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

あなたの助けがはるかに高く評価されます!

+0

あなたの活動のXMLレイアウトを追加してもらえますか? –

+0

@MuthukrishnanRajendran XMLレイアウトコードを追加しました。ありがとう! –

答えて

0

フラグメント背景を白色に設定します。 これで問題は解決します。

<FrameLayout 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" 
android:background="#ffffff" 
tools:context="com.creationjunkies.fragments.CityFragment"> 

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

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

     <android.support.v7.widget.RecyclerView 
      android:id="@+id/cityBargainsRecyclerView" 
      android:scrollbars="vertical" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"/> 
    </android.support.v4.widget.SwipeRefreshLayout> 
</RelativeLayout> 

+0

いいえ、この質問を投稿する前に私がすでにうまくやったので役に立たなかった:) –

+0

スクリーンショットを送ってもらえますか? – user2980415

関連する問題