如何解决底部导航视图不出现在模拟器中,仅出现在布局预览中
导航底视图没有显示,尽管在预览中显示了代码,但我没有看到任何错误。 一旦启动了主要活动,它就不会显示。 请注意,我正在使用启动活动中的底部导航视图启动主要活动,该活动将检查用户是否登录。
这是启动活动布局文件
package io.keepcoding.androidfinalproject.ui
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import io.keepcoding.androidfinalproject.R
import io.keepcoding.androidfinalproject.ui.auth.AuthActivity
import io.keepcoding.androidfinalproject.ui.main.MainActivity
class LaunchingActivity : AppCompatActivity() {
private var userLoggedIn: Boolean = true
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_launch)
if(userLoggedIn){
startAppActivity()
} else {
startAuthActivity()
}
}
private fun startAuthActivity() {
val intent = Intent(this,AuthActivity::class.java)
startActivity(intent)
finish()
}
private fun startAppActivity() {
val intent = Intent(this,MainActivity::class.java)
startActivity(intent)
finish()
}
}
这是未显示的启动活动布局文件,因为如果用户登录,应用程序一旦启动,就会启动主要活动。
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.LaunchingActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
这是我的主要活动布局文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.main.MainActivity"
>
<FrameLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/navigationView"
app:labelVisibilityMode="labeled"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
app:itemBackground="@color/app_bar"
app:itemIconTint="@color/white"
app:itemTextColor="@color/bottom_nav_bar_unselected"
app:menu="@menu/bottom_nav_menu"/>
</RelativeLayout>
这是我的主要活动代码
package io.keepcoding.androidfinalproject.ui.main
import android.os.Bundle
import android.os.PersistableBundle
import androidx.appcompat.app.ActionBar
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.Fragment
import androidx.fragment.app.replace
import com.google.android.material.bottomnavigation.BottomNavigationView
import io.keepcoding.androidfinalproject.R
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
private lateinit var toolbar: ActionBar
override fun onCreate(savedInstanceState: Bundle?,persistentState: PersistableBundle?) {
super.onCreate(savedInstanceState,persistentState)
setContentView(R.layout.activity_main)
toolbar = supportActionBar!!
val bottomNavigation: BottomNavigationView = navigationView
bottomNavigation.setonNavigationItemSelectedListener(mOnNavigationItemSelectedListener)
}
private val mOnNavigationItemSelectedListener = BottomNavigationView.OnNavigationItemSelectedListener {
when(it.itemId) {
R.id.navigation_products -> {
toolbar.title = "Products"
val productFragment = ProductsFragment.newInstance()
openFragment(productFragment)
return@OnNavigationItemSelectedListener true
}
R.id.navigation_map -> {
toolbar.title = "Map"
val mapFragment = ProductsFragment.newInstance()
openFragment(mapFragment)
return@OnNavigationItemSelectedListener true
}
R.id.navigation_profile -> {
toolbar.title = "Profile"
val profileFragment = ProductsFragment.newInstance()
openFragment(profileFragment)
return@OnNavigationItemSelectedListener true
}
R.id.navigation_notifications -> {
toolbar.title = "Notifications"
val notificationsFragment = ProductsFragment.newInstance()
openFragment(notificationsFragment)
return@OnNavigationItemSelectedListener true
}
}
false
}
private fun openFragment(fragment: Fragment) {
val transaction = supportFragmentManager.beginTransaction()
transaction.replace(R.id.container,fragment)
transaction.addToBackStack(null)
transaction.commit()
}
}
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/navigation_products"
android:icon="@drawable/ic_products"
android:enabled="true"
android:title="@string/title_products" />
<item
android:id="@+id/navigation_map"
android:icon="@drawable/ic_map"
android:enabled="true"
android:title="@string/title_map" />
<item
android:id="@+id/navigation_sell"
android:icon="@drawable/ic_add"
android:enabled="true"
android:title="@string/title_sell"
/>
<item
android:id="@+id/navigation_profile"
android:icon="@drawable/ic_profile"
android:enabled="true"
android:title="@string/title_profile"
/>
<item
android:id="@+id/navigation_notifications"
android:icon="@drawable/ic_notifications"
android:enabled="true"
android:title="@string/title_notifications" />
</menu>
您可以在此处找到该项目的链接
https://github.com/kcFinalProject/AndroidFinalProject/tree/master
解决方法
您的activity_main.xml是具有导航栏的那个吗?
如果是这种情况,则可能是您的问题是Frame Layour的高度为match_parent
要查看是否存在此问题,请将框架布局可见性设置为不可见
将android:visibility="invisible"
属性添加到FrameLayout,然后查看导航栏是否可见。
如果现在可以看到导航栏,则必须在导航栏的顶部设置FrameLayout的底部约束。向FrameLayout android:layout_above="@id/navigationView"
解决了,我覆盖了错误的onCreate方法,因此从Launching活动中启动的主要活动从未真正运行过。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。