Я хочу поставить плавающую кнопку действия (FAB) с 2 действиями (одинаково для обоих фрагментов) в 2 фрагментах. Проблема в том, что у меня есть только одно действие и много фрагментов (больше, чем эти 2). Каков наилучший способ сделать это? Создание FAB в основном XML или дублирование его в обоих фрагментах?Плавающая кнопка действия в двух фрагментах
ответ
В настоящее время я работаю над приложением с некоторыми подобными проблемами, вот что я сделал.
Я начал с шаблона активности приложения Android Studio Navigation Drawer (создайте новое действие и выберите одно для навигационного ящика). Он создал FAB поверх основного макета контента. Внутри этого макета у меня есть контейнер, в который я ввожу и вставляю фрагменты. Когда я не хочу, чтобы FAB показывал, я вызываю FloatingActionButton.hide(...) в Activity, а затем FloatingActionButton.show(), когда я хочу его вернуть.
Это требует, чтобы знать, какой фрагмент в настоящее время видно, так что вы должны обеспечить тег при настройке Фрагмент сделки:
getFragmentManager()
.beginTransaction()
.replace(R.id.fragment_container, EditTaskFragment.newInstance(true), FRAGMENT_EDIT)
.addToBackStack(null)
.commit();
Где FRAGMENT_EDIT
определяется как:
private static final String FRAGMENT_EDIT = "edit";
Когда вы фиксируете транзакция, которую вы можете вызвать FAB show
или hide
. Обратите внимание, что это также может потребовать от вас, чтобы прослушать кнопку назад прессованного событие:
@Override
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
if (getFragmentManager().getBackStackEntryCount() > 0){
EditTaskFragment editFragment = (EditTaskFragment)getFragmentManager().findFragmentByTag(FRAGMENT_EDIT);
if (editFragment != null && editFragment.isVisible()) {
// coming back from edit, reset fab to add icon
setFabIcon(R.drawable.ic_add_24dp);
}
getFragmentManager().popBackStack();
} else if(null == mTaskFragment || !mTaskFragment.cancelRefreshData()) {
super.onBackPressed();
}
}
}
setFabIcon
используется, чтобы скрыть FAB (термоусадочная анимация), изменить значок, а затем показать его снова (растут анимации):
private void setFabIcon(final int resId) {
fab.hide(new FloatingActionButton.OnVisibilityChangedListener() {
@Override
public void onHidden(FloatingActionButton fab) {
fab.setImageResource(resId);
fab.show();
}
});
}
Внутри onCreate
метода I настройки своей деятельности в щелчок слушателя для FAB и проверить, какой фрагмент я должен передать вызов:
fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Fragment currentFragment = getFragmentManager().findFragmentById(R.id.fragment_container);
String tag = currentFragment.getTag();
switch (tag) {
case FRAGMENT_TASKS:
Snackbar.make(view, "Task creation is...under construction", Snackbar.LENGTH_LONG).show();
break;
case FRAGMENT_TURNS:
((TurnFragment) currentFragment).takeTurn(view);
break;
case FRAGMENT_EDIT:
((EditTaskFragment) currentFragment).saveTask();
break;
default:
Log.e(TAG, "Unhandled FAB fragment tag " + tag);
Snackbar.make(view, "Not sure what to do...my bad", Snackbar.LENGTH_SHORT).show();
break;
}
}
});
Примечание т Каждый из фрагментов, которые я вызываю, выдает общедоступный метод, который ожидается для операции.
- 1. Плавающая кнопка действия в linearLayout
- 2. Плавающая кнопка действия в Xamarin.Forms
- 3. плавающая кнопка действия внизу справа
- 4. Плавающая кнопка действия плохой рендеринг
- 5. Плавающая кнопка действия и RecyclerView
- 6. Плавающая Кнопка Действия Без отмечаемых
- 7. Relocationg Плавающая кнопка действия пользователем
- 8. Поверхность и плавающая кнопка действия
- 9. Нижняя выровняющая плавающая кнопка действия
- 10. Android: плавающая кнопка действия в неправильном положении
- 11. Плавающая кнопка действия Текст в сторону
- 12. Скрытая плавающая кнопка действия появляется в координатореLayout
- 13. Плавающая кнопка действия в ViewPager над спискомView
- 14. Плавающая кнопка действия между двумя вкладками
- 15. Android - плавающая кнопка действия в верхней части карты Google
- 16. Плавающая кнопка действия, блокирующая другие компоненты
- 17. Scrolling/sticky FAB плавающая кнопка действия android
- 18. Плавающая кнопка действия, не реагирующая на нажатие
- 19. плавающая кнопка действия на реагировании родной
- 20. Плавающая кнопка действия отображает png по-разному?
- 21. Плавающая кнопка действия не справа внизу
- 22. Плавающая Кнопка Действия, версия 23.2 не скрывают
- 23. Android: Вертикально развернутая плавающая кнопка действия
- 24. Комплект FAB (плавающая кнопка действия) над клавиатурой
- 25. Android Плавающая кнопка действия Открывает небольшой вид
- 26. Плавающая кнопка действия diasappears под SECOND Snackbar
- 27. Плавающая кнопка действия onClick after hide/show
- 28. FAB (плавающая кнопка действия) не плавает
- 29. Плавающая кнопка действия, скрытая за навигационным ящиком
- 30. Плавающая кнопка действия больше не прозрачна
У меня это работает по-другому: в каждом фрагменте метода onCreateView я помещаю код, устанавливающий видимость FAB в GONE или VISIBLE в зависимости от фрагмента. getMainActivity(). MButton_adicionar.setVisibility (View.VISIBLE); –
Это выглядит проще. – geniusburger