【发布时间】:2021-04-13 20:46:42
【问题描述】:
我目前正在为我妈妈做一个个人项目,因为她喜欢植物/花卉,所以我决定制作一个应用程序,但在制作工具栏/操作栏/顶部栏的过程中遇到了问题(我真的不知道哪个名字参考,因为我研究了很多,我猜每个人都给出了不同的名字)
所以问题..
我已经完成并希望作为最终结果的设计:
My objective is something like this and this for the navigation drawer
目前经过一些研究并试图理解导航抽屉和工具栏,我觉得目前很难理解,因为感觉如此笨拙和混乱,我得到了这个:
toolbar/actionbar/topbar and this as drawer
问题是我不能添加购物车图标,我也做了一个菜单来添加它,它只是没有出现
我的菜单
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/tool_cart"
android:contentDescription="@string/cart"
android:icon="@drawable/cart_icon"
android:title="@string/cart"
app:showAsAction="always" />
</menu>
我的抽屉
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">
<item android:id="@+id/nav_home"
android:title="@string/home"
android:icon="@drawable/home_icon"/>
<item android:id="@+id/nav_promotions"
android:title="@string/promotions"
android:icon="@drawable/promotion_icon"/>
<item android:id="@+id/nav_gallery"
android:title="@string/gallery"
android:icon="@drawable/gallery_icon"/>
<item android:id="@+id/nav_order_history"
android:title="@string/old_shipping_orders"
android:icon="@drawable/history_icon"/>
</group>
<group android:checkableBehavior="single">
<item android:id="@+id/nav_account"
android:title="@string/account"
android:icon="@drawable/name_acc_icon"/>
<item android:id="@+id/nav_about_us"
android:title="@string/about_us"
android:icon="@drawable/about_us_icon"/>
<item android:id="@+id/nav_settings"
android:title="@string/settings"
android:icon="@drawable/setings_icon"/>
<item android:id="@+id/nav_log_ou"
android:title="@string/log_off"
android:icon="@drawable/logout_icon"/>
</group>
</menu>
我的活动 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:background="@color/light_green_bg"
tools:context=".Home"
android:id="@+id/drawer_layout"
android:fitsSystemWindows="true"
tools:openDrawer="start">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:visibility="visible">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
app:layout_scrollFlags="scroll|enterAlways|snap"
android:layout_height="?actionBarSize"
android:background="@color/dark_green_bg"
android:elevation="6dp"
app:menu="@menu/menu_cart"
android:theme="@style/App.ToolbarStyle"
app:titleTextAppearance="@style/App.ToolbarTitleTex"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:titleTextColor="@color/light_green_bg" />
</LinearLayout>
<com.google.android.material.navigation.NavigationView
android:id="@+id/nav_view_home"
android:layout_width="wrap_content"
android:layout_height="match_parent"
app:itemTextColor="@color/brown"
android:layout_gravity="start"
android:visibility="visible"
app:headerLayout="@layout/header_nav_drawer"
app:itemIconTint="@color/brown"
app:menu="@menu/nav_drawer"
/>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.bottomappbar.BottomAppBar
android:id="@+id/bottomAppBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
app:fabAnimationMode="slide"
app:fabCradleMargin="10dp"
app:fabCradleRoundedCornerRadius="20dp">
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottomNavView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginEnd="16dp"
android:background="@android:color/transparent"
app:menu="@menu/bottom_nav" />
</com.google.android.material.bottomappbar.BottomAppBar>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fabChat"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentEnd="true"
android:layout_gravity="bottom|end"
android:layout_marginEnd="12dp"
android:layout_marginBottom="68dp"
android:src="@drawable/chat_icon"
app:shapeAppearanceOverlay="@style/fab_3_rounded"
android:contentDescription="TODO" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.drawerlayout.widget.DrawerLayout>
我的家.kt
class Home : AppCompatActivity() {
private lateinit var binding: ActivityHomeBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityHomeBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.bottomNavView.background = null
// binding.bottomNavView.menu.getItem(2).isEnabled = false
setSupportActionBar(binding.toolbar)
supportActionBar!!.setTitle(R.string.app_name_spaced)
binding.navViewHome.bringToFront()
val toggle = ActionBarDrawerToggle(this,binding.drawerLayout,binding.toolbar,R.string.drawer_open,R.string.drawer_closed)
binding.drawerLayout.addDrawerListener(toggle)
toggle.syncState()
/* binding.navViewHome.setNavigationItemSelectedListener(this)
binding.navViewHome.setCheckedItem(R.id.nav_home)*/
}
override fun onBackPressed() {
if(binding.drawerLayout.isDrawerOpen(GravityCompat.START)){
binding.drawerLayout.closeDrawer(GravityCompat.START)
}
else{
super.onBackPressed()
}
}
}
在我在这里问之前,我试图找到将出现的图标(例如第一个图像和文本)放在中心的解决方案,但我只是找不到它或让它以某种方式工作,所以我再次寻求帮助和指导关于问题或它自己的代码。
我是一名学生,我尝试学习/练习语言,我想在业余时间进行个人项目,非常感谢任何建议或帮助!
更新 我发现人们实际上对支持操作栏有同样的事情,但如果没有它我似乎无法让它工作
【问题讨论】:
-
卡片图标并不是你抽屉的一部分。它被添加为选项菜单。你可以在这里找到更多关于不同菜单的信息:developer.android.com/guide/topics/ui/menus
-
将
MaterialToolbar放入ConstraintLayout可能吗?
标签: android xml android-studio android-layout