Android Navigasyon Çekmece görüntü arasında geçiş ve parçaları kullanıldığında şapka
Kullanırken Navigasyon Çekmece Android geliştiriciler tavsiye edilir bunun ActionBar "sadece o ekrandan gösterilen Gezinti Çekmece gerekir aslında Navigasyon Çekmece görüntü" ve "tüm diğer ekranlar geleneksel Yukarı karat."
Ayrıntılar için buraya bakın: http://youtu.be/F5COhlbpIbY
Bir aktivite parçalarının birden çok düzeyleri kontrol etmek için kullanıyorum ve Navigasyon Çekmece görüntü ve her düzeyde gösterimi için alabilir.
Alt seviye parçaları oluştururkenActionBarDrawerToggle
setDrawerIndicatorEnabled(false)
Navigasyon Çekmece görüntüyü gizlemek ve şapka görüntülenmesini arayabilirim
LowerLevelFragment lowFrag = new LowerLevelFragment();
//disable the toggle menu and show up carat
theDrawerToggle.setDrawerIndicatorEnabled(false);
getSupportFragmentManager().beginTransaction().replace(R.id.frag_layout,
lowFrag, "lowerFrag").addToBackStack(null).commit();
Yaşıyorum sorun ben bu Kadar ayar hala dizi üst düzey geri parçaları gezinmek yerine Navigasyon Çekmece orijinal resim. "En üst düzeyde ActionBar re-Navigasyon Çekmece görüntü? parçalar "yenileme konusunda herhangi bir öneriniz
Çözüm
Tom önerisi benim için çalıştı. Yaptığım şey şu:
MainActivity
Bu faaliyeti uygulama tüm parçaları kontrol eder.
Yeni parçalar Diğerleri değiştirmek için hazırlanırken, DrawerToggle böyle setDrawerIndicatorEnabled(false)
I ayarlayın:
LowerLevelFragment lowFrag = new LowerLevelFragment();
//disable the toggle menu and show up carat
theDrawerToggle.setDrawerIndicatorEnabled(false);
getSupportFragmentManager().beginTransaction().replace(R.id.frag_layout,
lowFrag).addToBackStack(null).commit();
Sonraki onBackPressed
, geçersiz kılma, bu gibi setDrawerIndicatorEnabled(true)
DrawerToggle ayarlayarak yukarıda döndü:
@Override
public void onBackPressed() {
super.onBackPressed();
// turn on the Navigation Drawer image;
// this is called in the LowerLevelFragments
setDrawerIndicatorEnabled(true)
}
Bu LowerLevelFragments
Parçaları onCreate
böyle onOptionsItemSelected
ben değişiklik:
onCreate
eklendi setHasOptionsMenu(true)
seçenekler menüsünü yapılandırma etkinleştirmek için. Ayrıca setDisplayHomeAsUpEnabled(true)
etkinleştirmek için ayarlayın<bu actionbar:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// needed to indicate that the fragment would
// like to add items to the Options Menu
setHasOptionsMenu(true);
// update the actionbar to show the up carat/affordance
getActivity().getActionBar().setDisplayHomeAsUpEnabled(true);
}
Daha sonra onOptionsItemSelected
ne zaman<etkinliği onBackPressed()
hiyerarşisinde bir düzey yukarı taşımak ve Navigasyon Çekmece Görüntüyü göstermek için çağırır basıldığında:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Get item selected and deal with it
switch (item.getItemId()) {
case android.R.id.home:
//called when the up affordance/carat in actionbar is pressed
getActivity().onBackPressed();
return true;
…
}
CEVAP
1-2-3 kadar kolay.
Eğer elde etmek istiyorsanız:
1)Çekmece Göstergesihayır parçaları Arkada olduğunda Yığın veya Çekmeceyi açtı
2)Okbazı Parçaları zaman - Geri Yığını
private FragmentManager.OnBackStackChangedListener
mOnBackStackChangedListener = new FragmentManager.OnBackStackChangedListener() {
@Override
public void onBackStackChanged() {
syncActionBarArrowState();
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mDrawerToggle = new ActionBarDrawerToggle(
this,
mDrawerLayout,
R.drawable.ic_navigation_drawer,
0,
0
) {
public void onDrawerClosed(View view) {
syncActionBarArrowState();
}
public void onDrawerOpened(View drawerView) {
mDrawerToggle.setDrawerIndicatorEnabled(true);
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
getSupportFragmentManager().addOnBackStackChangedListener(mOnBackStackChangedListener);
}
@Override
protected void onDestroy() {
getSupportFragmentManager().removeOnBackStackChangedListener(mOnBackStackChangedListener);
super.onDestroy();
}
private void syncActionBarArrowState() {
int backStackEntryCount =
getSupportFragmentManager().getBackStackEntryCount();
mDrawerToggle.setDrawerIndicatorEnabled(backStackEntryCount == 0);
}
3) Her İki gösterge hareket şekline göre
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (mDrawerToggle.isDrawerIndicatorEnabled() &&
mDrawerToggle.onOptionsItemSelected(item)) {
return true;
} else if (item.getItemId() == android.R.id.home &&
getSupportFragmentManager().popBackStackImmediate()) {
return true;
} else {
return super.onOptionsItemSelected(item);
}
}
P. S. 3 satır gösterge davranış hakkında diğer ipuçları Creating a Navigation Drawer on Android Developers Bkz.
Animasyon parçaları arasında geçiş...
Daha iyi - birden fazla faaliyet veya ...
Android 5.0 materyal tasarım stili nav...
Android - bir sekme içinde bir Faaliye...
Sekmeler arasında geçiş yapmak için na...