【发布时间】:2022-01-10 12:49:21
【问题描述】:
我有一个顶栏和一个底栏。我想从顶部菜单到某些地方,从底部菜单到某些地方。但这两个部分相互重叠,我该如何在片段中解决这个问题。我制作了 Twitter 样式的底部和顶部组件,但是片段被覆盖了。
我搜索了片段删除代码,但找不到。
你能告诉我哪里出错了吗?
谢谢。
FeedActivity2.kt
package com.ager.sutra
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import androidx.core.view.GravityCompat
import androidx.drawerlayout.widget.DrawerLayout
import androidx.fragment.app.Fragment
import androidx.navigation.NavController
import androidx.navigation.Navigation
import androidx.navigation.fragment.NavHostFragment
import androidx.navigation.ui.NavigationUI
import com.ager.sutra.databinding.ActivityFeed2Binding
import com.google.android.material.navigation.NavigationView
import com.ager.sutra.fragments.HomeFragment
import com.ager.sutra.fragments.MessageFragment
import com.ager.sutra.fragments.ProfileFragment
import com.ager.sutra.fragments.SearchFragment
class FeedActivity : AppCompatActivity() {
private lateinit var binding : ActivityFeed2Binding
private lateinit var fragmentLane : Fragment
private val homeFragment = HomeFragment()
private val searchFragment = SearchFragment()
private val messageFragment = MessageFragment()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityFeed2Binding.inflate(layoutInflater)
val view = binding.root
setContentView(view)
val drawerLayout : DrawerLayout = findViewById(R.id.drawerLayout)
binding.imageMenu.setOnClickListener(View.OnClickListener {
drawerLayout.openDrawer(GravityCompat.START) })
val navView : NavigationView = findViewById(R.id.navigationView)
val navController : NavController =
Navigation.findNavController(this,R.id.navHostFragment)
try {
NavigationUI.setupWithNavController(navView, navController)
}catch (e : Exception){
println(e.localizedMessage)
}
val bottomNav = binding.bottomNavigation
bottomNav.setOnItemSelectedListener {
when(it.itemId){
R.id.bottom_home -> makeCurrentFragment(homeFragment)
R.id.bottom_search -> makeCurrentFragment(searchFragment)
R.id.bottom_messages -> makeCurrentFragment(messageFragment)
}
true
}
}
private fun makeCurrentFragment(fragment: Fragment) =
supportFragmentManager.beginTransaction().apply{
replace(R.id.navHostFragment, fragment)
commit()
}
}
activity_feed2.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout
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"
android:id="@+id/drawerLayout"
tools:context=".FeedActivity"
>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/layoutToolBar"
android:layout_width="match_parent"
android:layout_height="?actionBarSize"
android:background="@color/darkGray"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingStart="15dp"
android:paddingEnd="15dp"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:id="@+id/imageMenu"
android:layout_width="24dp"
android:layout_height="24dp"
android:contentDescription="@string/app_name"
android:src="@drawable/ic_baseline_menu_24"
app:tint="@color/white" />
<TextView
android:id="@+id/textTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:text="@string/app_name"
android:textColor="@color/yellow"
android:textSize="20sp"
android:textStyle="bold"/>
</LinearLayout>
<fragment
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintTop_toBottomOf="@id/layoutToolBar"
app:layout_constraintBottom_toTopOf="@id/bottom_navigation"
android:id="@+id/navHostFragment"
android:name="androidx.navigation.fragment.NavHostFragment"
app:defaultNavHost = "true"
app:navGraph="@navigation/main"
app:background="@color/darkGray"
/>
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottom_navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/darkGray"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:itemRippleColor="@android:color/transparent"
app:itemIconSize="24dp"
app:labelVisibilityMode="unlabeled"
app:itemIconTint="@drawable/bottom_itemselector"
app:menu="@menu/bottom_menu"
>
</com.google.android.material.bottomnavigation.BottomNavigationView>
</androidx.constraintlayout.widget.ConstraintLayout>
<com.google.android.material.navigation.NavigationView
android:id="@+id/navigationView"
android:layout_width="wrap_content"
android:layout_height="match_parent"
app:menu="@menu/nav_menu"
app:headerLayout="@layout/nav_header"
android:layout_gravity="start"/>
</androidx.drawerlayout.widget.DrawerLayout>
main.xml(导航)
<?xml version="1.0" encoding="utf-8"?>
<navigation 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:id="@+id/main"
app:startDestination="@+id/nav_home">
<fragment
android:id="@+id/nav_home"
android:name="com.ager.sutra.fragments.HomeFragment"
android:label="Home"
tools:layout="@layout/fragment_home" />
<fragment
android:id="@+id/nav_profile"
android:name="com.ager.sutra.fragments.ProfileFragment"
android:label="Profile"
tools:layout="@layout/fragment_profile" />
<fragment
android:id="@+id/nav_settings"
android:name="com.ager.sutra.fragments.SettingsFragment"
android:label="Settings"
tools:layout="@layout/fragment_settings" />
<fragment
android:id="@+id/messageFragment"
android:name="com.ager.sutra.fragments.MessageFragment"
android:label="Message"
tools:layout="@layout/fragment_message" />
</navigation>
【问题讨论】:
标签: android android-studio kotlin android-fragments