android - 工具栏/顶部栏/操作栏中的 Android Studio xml 问题
问题描述
我目前正在为我妈妈做一个个人项目,因为她喜欢植物/花卉,所以我决定制作一个应用程序,但在制作工具栏/操作栏/顶部栏的过程中遇到了问题(我真的不知道该引用哪个名称,因为我研究了很多,我猜每个人都给不同的名字)
所以问题..
我所做的设计并希望作为最终结果:
目前,经过一些研究并试图理解导航抽屉和工具栏,我觉得目前很难理解,因为感觉如此笨拙和令人困惑,我得到了这个:
问题是我无法添加购物车图标,我也制作了一个菜单来添加它,但它只是没有出现
我的菜单
<?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()
}
}
}
在我在这里问之前,我试图找到将出现的图标(例如第一张图像和文本)放在中心的解决方案,但我只是找不到它或让它以某种方式工作,所以我再次寻求帮助和指导这个问题或它自己的代码。
我是一名学生,我尝试学习/投入练习语言,我想在业余时间做个人项目,任何建议或帮助都非常感谢!
更新 我发现人们实际上对支持操作栏有同样的看法,但没有它我似乎无法让它工作
解决方案
我得到了解决方案,以防有人搜索与我相同的东西
基本上你需要覆盖setSupportActionBar以防你像我一样使用它。
例子
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
menuInflater.inflate(R.menu.menu_cart, menu)
return true
}
推荐阅读
- c# - 我可以直接在 .cshtml 中为“asp-items”列表指定默认选项吗?
- django - 使用 Django 和 SMTP Google 发送电子邮件
- jquery - 将动态创建的输入值添加到数据库
- java - 转换 spring 端点输出
- java - IntelliJ 2020.2.4 中未导入 Maven 依赖项
- spring - Spring Boot:尝试从服务调用服务时连接超时
- python - 检查numpy数组中是否只出现一次最大值
- java - Spring Boot 层架构休息验证
- javascript - 我可以使用 Nodejs 制作网站跟踪器吗?
- mysql - MYSQL 存储过程 - 连续行值(续)