CollapsingToolbar
が私のフラグメントの1つのために拡大しないようにしようとしています。折りたたみツールバーが特定のフラグメントのために展開されないようにする
現在、方法setExpanded()
を使用すると、ツールバーが折りたたまれた状態になっています。
appBarLayout.setExpanded(false, true);
しかし、collapsingToolbarはまだ拡張可能ですが、これは私が望むものではありません。この特定のフラグメントに対してcollapsingToolbarを展開できないようにします。
つまり、collapsingToolbarは、この特定のフラグメントのみの通常のツールバー(つまり、「展開不可」)のように動作します。
私はMike Penz's Material Drawerを使用しています。下のコードは関連コードを示しています。
private void buildDrawer(){
Drawer drawer = new DrawerBuilder()
.withActivity(this)
.withFullscreen(true)
.withTranslucentStatusBar(true)
.withToolbar(toolbar)
.withAccountHeader(accountHeader)
.addDrawerItems(
item1,
item2,
new DividerDrawerItem(),
item3,
item4
)
.withOnDrawerItemClickListener(new Drawer.OnDrawerItemClickListener() {
@Override
public boolean onItemClick(View view, int position, IDrawerItem drawerItem) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
Fragment f = new Fragment();
switch (position) {
//other cases not shown
case 2:
f = new LocateFragment();
appBarLayout.setExpanded(false, true);
//Adding the following three lines don't work - causes the toolbar to be unscrollable, but in its expanded form
//AppBarLayout.LayoutParams p = (AppBarLayout.LayoutParams)collapsingToolbarLayout.getLayoutParams();
//p.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SNAP);
//collapsingToolbarLayout.setLayoutParams(p);
//toolbar.setCollapsible(false); doesn't work either
collapsingToolbarLayout.setTitle("Locate Events");
setInvisibleAddPhotoFab();
break;
//other cases not shown
}
fragmentTransaction.replace(R.id.frame_fragments, f);
fragmentTransaction.commit();
return false; //close drawer onclick
}
})
.build();
loadBackdrop();
}
これは私が欲しいものである - 私は、ツールバーは、拡張不能になりたい:
現在、しかし、それはまだ拡張可能なので、下の画像は、私が欲しいものではありません。
UPDATE: 私は、ツールバーを折りたたむので、(コードの下)のように拡大するのを防止することができましたが、私は別の問題に遭遇してきた - 私はそうのようにそれを設定したときのタイトルは、もはやcollapsingToolbarに表示されません:collapsingToolbarLayout.setTitle("string");
appBarLayout.setExpanded(false, true);
int px = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 80, getResources().getDisplayMetrics());
CoordinatorLayout.LayoutParams lp = (CoordinatorLayout.LayoutParams)appBarLayout.getLayoutParams();
lp.height = px;
appBarLayout.setLayoutParams(lp);
それはの行を私に与えcuzのあなたは、PXのコード行で '80'が何であるかを説明しますpx初期化、 'FATAL EXCEPTION:main プロセス:プロジェクト... n、PID:24890 java.lang.IllegalS tateException:フラグメントxFragment {ffd3ec0}がアクティビティにアタッチされていません。 android.support.v4.app.Fragment.getResources(Fragment.java:646) at project .... Fragment。 ' –
@DasserBasyouniフラグメントがアクティビティに添付されていないという別の問題が発生しているようです。 「アクティビティには添付されていません。 http://stackoverflow.com/questions/25262994/asyctask-throwing-illegalstateexception-phragment-not-attached-to-activity – Vinnie