📌  相关文章
📜  如何在 Android 中以像素为单位获取 ActionBar 高度?

📅  最后修改于: 2022-05-13 01:54:31.250000             🧑  作者: Mango

如何在 Android 中以像素为单位获取 ActionBar 高度?

ActionBar 是一个 UI 元素,通常为空,但可以包含菜单并在 Activity 之上运行。 ActionBar 的意义在于它显示了应用程序的名称,并且可以提供一个菜单来导航给用户。其余的可编程活动与 ActionBar 完全分开。因此,在将元素创建到可编程空间之前了解 ActionBar 属性很重要。在本文中,我们将向您展示如何在 Android 中以编程方式获取 ActionBar 高度。 IDE 准备就绪后,请按照以下步骤操作。

分步实施

第 1 步:在 Android Studio 中创建一个新项目

要在 Android Studio 中创建新项目,请参阅如何在 Android Studio 中创建/启动新项目。我们在Kotlin中演示了该应用程序,因此请确保在创建新项目时选择 Kotlin 作为主要语言。

第 2 步:使用 activity_main.xml 文件

导航到app > res > layout > activity_main.xml并将以下代码添加到该文件。下面是activity_main.xml文件的代码。布局 (activity_main.xml) 文件中不需要额外的代码。

XML


  
    
  


Kotlin
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.TypedValue
import android.widget.Toast
  
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        val tv = TypedValue()
        if (this.theme.resolveAttribute(R.attr.actionBarSize, tv, true)) {
            val actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data, resources.displayMetrics)
            Toast.makeText(applicationContext, actionBarHeight.toString(), Toast.LENGTH_SHORT).show()
        }
    }
}


第 3 步:使用MainActivity.kt 文件(在主代码中使用 TypedValue 获取操作栏)

转到MainActivity.kt文件并参考以下代码。下面是MainActivity.kt文件的代码。在此代码中,我们尝试解析 ActionBar 高度并将其显示在 Toast 消息中。显示的值以像素为单位。代码中添加了注释以更详细地理解代码。

科特林

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.TypedValue
import android.widget.Toast
  
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        val tv = TypedValue()
        if (this.theme.resolveAttribute(R.attr.actionBarSize, tv, true)) {
            val actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data, resources.displayMetrics)
            Toast.makeText(applicationContext, actionBarHeight.toString(), Toast.LENGTH_SHORT).show()
        }
    }
}

输出:

我们可以看到我们能够获取 ActionBar 的高度,它等于 147 像素。