首页 > 解决方案 > 如何在 actionBar 但在 kotlin 中实现计数器

问题描述

我问这个问题是因为我到处搜索,但找不到任何解决问题的方法。正如标题所说,我在 Kotlin 中找不到任何东西,一切都在 Java 中,而且我是 Kotlin 的新手。我需要做一些事情,如下图所示。我看过以下链接,但它们对我来说并不特别有用:

像 Google 一样的操作栏通知计数图标(徽章)

如何在 ActionBar 图标上获取文本?

这是我拥有的代码,对我不起作用的是来自柜台的项目,我应该称之为 TabListActivity (它向我显示一个列表),但它没有。

OnOptionsItemSelected单击该项目时不认识我,我知道是因为我使用调试。

在此处输入图像描述

这是我的主要活动,称为TabActivity.kt

 override fun onCreateOptionsMenu(menu: Menu?): Boolean {
             menuInflater.inflate(R.menu.tab_menu, menu)

         countButton = menu?.findItem(R.id.tab_list_button)
         countButton?.setActionView(R.layout.tab_button)
         var notif = countButton?.actionView as RelativeLayout
         var tv: TextView = notif.findViewById(R.id.tabCount)
         tv.text = TabInfo.count().toString()
         countButton?.title = tv.text

         return super.onCreateOptionsMenu(menu) }

override fun onOptionsItemSelected(item: MenuItem): Boolean {
        when (item.itemId) {
            R.id.forward_button -> {
                TabInfo.currentWebView().goForward()
                refreshForwardButton()
            }
            R.id.reload_button -> {
                reloadCurrentTab()
                return true
            }
            R.id.tab_list_button -> {
                val intent = Intent(this, TabListActivity::class.java)
                startActivity(intent)
                return true
            }
        }

        return super.onOptionsItemSelected(item)
    }

我的菜单被称为tab_menu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item android:id="@+id/forward_button"
          app:showAsAction="collapseActionView"
          android:title="@string/go_forward"
          android:icon="@drawable/ic_arrow_forward_black_24dp" />

    <item android:id="@+id/reload_button"
          app:showAsAction="collapseActionView"
          android:title="@string/reload_page"
          android:icon="@drawable/ic_refresh_black_24dp" />

    <item android:id="@+id/tab_list_button"
          app:showAsAction="always"
          android:title="@string/number_tabs"
          android:actionLayout="@layout/tab_button"
        />
</menu>

我的布局是tab_button.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="32sp"
    android:layout_height="32sp"
    xmlns:tools="http://schemas.android.com/tools">

    <ImageView
        android:id="@+id/img_button"
        android:layout_width="32dp"
        android:layout_height="32dp"
        android:src="@drawable/ic_check_box_outline_blank_black_24dp"/>


    <TextView
        android:id="@+id/tabCount"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:textAlignment="center"
        android:textColor="?attr/textcolor"
        android:textSize="12sp"
        android:textStyle="bold"
        tools:text="1" />
</RelativeLayout>

当我在这里写下来时,我就是这样写的,它对我有用,但它只显示计数器而不是图标和计数器。

在此处输入图像描述

override fun onCreateOptionsMenu(menu: Menu?): Boolean {
            menuInflater.inflate(R.menu.tab_menu, menu)

        countButton = menu?.findItem(R.id.tab_list_button)
        countButton?.title = TabInfo.count().toString()  
        countButton?.actionView?.
            setBackgroundResource(R.drawable.ic_check_box_outline_blank_black_24dp)

            return super.onCreateOptionsMenu(menu)
    }

我的英语不是很好,对不起。谢谢

标签: androidkotlinandroid-actionbar

解决方案


推荐阅读