1

私のアプリにはいくつかのタブがあるviewPagerがあります。一部のタブでは、アイテムをクリックすると新しいフラグメントが表示されます。私は、この断片がタブを覆うようにしたい。これを行うことは可能ですが、アプローチは私には良く見えません。Android:viewPagerタブフラグメントの1つからフラグメントを起動すると、viewPagerタブを非表示にする

1.)1つは、新しく作成したフラグメントをgetSupportFragmentManager()を使用してアクティビティに追加することです。これは問題を解決しますが、バックボタンなどを使用するときに問題が発生するため、良いアイデアのようには見えません。

2)その他の方法は、Visibilty.GONEを使用して手動でタブを非表示にしていますが、のタブが表示されている、私はアニメーションが見えて悪い見えることを意味します。

この問題を解決する方法はありますか?

これは私のコードです。 「sub_fragment_containerは、」活動のXMLに存在しているので、私はエラーを取得java.lang.IllegalArgumentException: No view found for id 0x7f0e00ff (com.my.app:id/sub_fragment_container) for fragment DetailFragment{

FragmentTransaction fragmentTransaction = getChildFragmentManager() 
         .beginTransaction(); 
       Fragment profileFragment = new DetailFragment(); 
       profileFragment.setArguments(bundle); 
       fragmentTransaction 
         .add(R.id.sub_fragment_container, profileFragment); 
       fragmentTransaction.addToBackStack(null); 
       fragmentTransaction.commit(); 

答えて

1

使用android:animateLayoutChanges="true" あるいは、微調整するためには、さらに、ここで私が個人的に解決するために私のアプリNewsletに使用していたテスト方法ですまったく同じ問題。

  1. AppBarLayout内にツールバーとTabLayoutをラップします。これは、設計支援ライブラリを認識している場合は簡単に行う必要があります。そうでない場合は、thisを起動する必要があります。
  2. があなたのonCreate()内のコードのこの部分を追加します。この後

    LayoutTransition layoutTransition = new LayoutTransition(); 
    layoutTransition.setDuration(200); 
    layoutTransition.setStartDelay(LayoutTransition.CHANGE_APPEARING, 0); 
    layoutTransition.setStartDelay(LayoutTransition.APPEARING, 0); 
    layoutTransition.setStartDelay(LayoutTransition.DISAPPEARING, 0); 
    layoutTransition.setStartDelay(LayoutTransition.CHANGE_DISAPPEARING, 0); 
    
    appBarLayout.setLayoutTransition(layoutTransition); 
    

を、あなたはタブを削除したり、戻ってそれを追加するときに、レイアウト変更がスムーズにアニメーション化されます。

これはあなたを助けました!

+0

返信いただきありがとうございます。私はそれを試して、それが動作する場合は受け入れる! – varunkr

関連する問題