Moa*_*med 10 android android-fragments floating-action-button bottomnavigationview
我有一个底部导航视图,其中有3个项目导航到3个不同的片段(片段只创建一次,它们的实例保存在mainactivity的onSavedInstanceState()中),并在其上面有一个浮动操作按钮.
我们想要在访问每个片段时更改fab的图标,我们尝试了两个片段,setImageResource()并且.setImageDrawable()在选择每个底部导航图标的情况下在晶圆厂的工厂中.
/**
* used to handle switching between fragments when a new navigation item is selected
*/
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.nav_tasks:
.........
loadFragment(tasksFragment);
mFab.setOnClickListener(mFabClickListenerTasks);
mFab.setImageDrawable(getResources().getDrawable(R.drawable.ic_add_task));
//2 tabs in 1 fragment
if (mTabLayout.getSelectedTabPosition() == 1)
mFab.hide();
else mFab.show();
break;
case R.id.nav_employees:
.......
loadFragment(employeesFragment);
mFab.setOnClickListener(mFabClickListenerEmployees);
mFab.setImageDrawable(getResources().getDrawable(R.drawable.ic_add_employee2));
mFab.show();
break;
case R.id.nav_departments:
.......
loadFragment(departmentsFragment);
mFab.setOnClickListener(mFabClickListenerDepartments);
mFab.setImageDrawable(getResources().getDrawable(R.drawable.ic_add_department));
mFab.show();
break;
}
item.setChecked(true);
return true;
}
void loadFragment(Fragment fragment) {
if (activeFragment == fragment)
return;
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.hide(activeFragment).show(fragment);
activeFragment = fragment;
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
if (activeFragment instanceof TasksFragment)
mFab.setImageResource(R.drawable.ic_add_task);
else if(activeFragment instanceof DepartmentsFragment)
mFab.setImageResource(R.drawable.ic_add_department);
else if(activeFragment instanceof EmployeesFragment)
mFab.setImageResource(R.drawable.ic_add_employee2);
transaction.commit();
}
Run Code Online (Sandbox Code Playgroud)
3个片段主要是3个回收者视图,我们还在recyclerview滚动时隐藏了fab.
当从底部导航遍历片段时,fab drawable将被正确设置,但是当我们滚动它时,在任何片段中保存此状态以在之后返回它.
当转到另一个片段时,这将移除fab drawable,并且在没有图标可绘制的情况下将fab留空.我们怎么解决这个问题?
Zia*_*abi 18
我有同样的问题,当活动进入的onPause那么的onResume我打电话setImageResource的FloatingActionButton.FAB图标正在消失.我的解决方案是在之后立即调用以下内容setImageResource
mFloatingActionButton.hide();
mFloatingActionButton.show();
Run Code Online (Sandbox Code Playgroud)
MrS*_*lge 10
这是FloatingActionButton类中的一个错误:当调用show()时,imageMatrixScale设置为0.调用setImageResource()然后只显示空白.它在调用show()之前有效.
该错误已在设计库28.0.0中引入,它正在使用v27.1.1.下调至27.1.1