我有一个 BottomNavigationView ,它在视图滚动到底部时隐藏,并在滚动到顶部时返回。
我的问题是,当 BottomNavigationView 被隐藏并且我更改时 我无法在该片段中显示BottomNavigationView的片段 屏幕上会有任何帮助。
以下是我的代码 DashboardActivity.kt
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:fitsSystemWindows="true"
app:elevation="2dp">
<include layout="@layout/toolbar"/>
</android.support.design.widget.AppBarLayout>
<FrameLayout
android:id="@+id/frame_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
<android.support.design.widget.BottomNavigationView
android:id="@+id/navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="0dp"
android:layout_marginStart="0dp"
android:layout_gravity="bottom"
app:labelVisibilityMode="selected"
app:layout_behavior="@string/hide_bottom_view_on_scroll_behavior"
app:itemIconTint="@android:color/white"
app:itemTextColor="@android:color/white"
android:background="@color/colorAccent"
app:itemBackground="@color/colorAccent"
app:menu="@menu/navigation"/>
任何帮助都是有意义的
预先感谢
编辑#1
DashboardActivity.kt
class DashboardActivity : BaseActivity(), EditProfileFragment.RefreshView, AddPatientFragment.NavigateView {
override fun navigateView() {
toDashboard()
}
override fun refreshView() {
val f: Fragment? = supportFragmentManager.findFragmentById(R.id.frame_container)
if (f != null && f is ProfileFragment) {
f.refreshView()
supportActionBar?.title = PROFILE
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_dashboard)
initializeToolBar()
navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener)
toDashboard()
}
/**
* Initialization of ToolBar
*/
private fun initializeToolBar() {
val toolbar: Toolbar = findViewById(R.id.toolbar)
setSupportActionBar(toolbar)
if (supportActionBar != null) {
supportActionBar!!.setDisplayShowHomeEnabled(true)
supportActionBar!!.setDisplayHomeAsUpEnabled(true)
}
}
private val mOnNavigationItemSelectedListener = BottomNavigationView.OnNavigationItemSelectedListener { item ->
when (item.itemId) {
R.id.navigation_home -> {
toDashboard()
return@OnNavigationItemSelectedListener true
}
R.id.navigation_medicine -> {
toMedicines()
return@OnNavigationItemSelectedListener true
}
R.id.navigation_add_patient -> {
toAddPatient()
return@OnNavigationItemSelectedListener true
}
R.id.navigation_profile -> {
toProfile()
return@OnNavigationItemSelectedListener true
}
}
false
}
private fun toProfile() {
toggleToolBar(false)
// navigation.selectedItemId = R.id.navigation_profile
navigation.labelVisibilityMode = View.VISIBLE
replaceFragment(ProfileFragment::class.java, PROFILE, false, null, R.id.frame_container)
}
private fun toAddPatient() {
toggleToolBar(false)
// navigation.selectedItemId = R.id.navigation_add_patient
navigation.labelVisibilityMode = View.VISIBLE
replaceFragment(AddPatientFragment::class.java, ADD_PATIENT, false, null, R.id.frame_container)
}
private fun toMedicines() {
toggleToolBar(false)
// navigation.selectedItemId = R.id.navigation_medicine
navigation.labelVisibilityMode = View.VISIBLE
replaceFragment(MedicineFragment::class.java, MEDICINE, false, null, R.id.frame_container)
}
private fun toDashboard() {
toggleToolBar(false)
navigation.labelVisibilityMode = View.VISIBLE
// navigation.selectedItemId = R.id.navigation_home
replaceFragment(HomeFragment::class.java, HOME, false, null, R.id.frame_container)
}
private fun toggleToolBar(value: Boolean) {
supportActionBar?.setDisplayHomeAsUpEnabled(value)
supportActionBar?.setDisplayShowHomeEnabled(value)
}
}
答案 0 :(得分:-2)
更新为最新的支持库版本28.0.0-alpha1,只需向BottomNavigationView添加一个属性即可。
<BottomNavigationView
....
....
app:layout_behavior="@string/hide_bottom_view_on_scroll_behavior"/>