`
chenpeilei2003
  • 浏览: 191845 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android获取状态栏和标题栏的高度

阅读更多
[转]
1.获取状态栏高度:

decorView是window中的最顶层view,可以从window中获取到decorView,然后decorView有个getWindowVisibleDisplayFrame方法可以获取到程序显示的区域,包括标题栏,但不包括状态栏。
于是,我们就可以算出状态栏的高度了。

Rect frame = new Rect();
getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
int statusBarHeight = frame.top;


2.获取标题栏高度:

getWindow().findViewById(Window.ID_ANDROID_CONTENT)这个方法获取到的view就是程序不包括标题栏的部分,然后就可以知道标题栏的高度了。

int contentTop = getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTop();
//statusBarHeight是上面所求的状态栏的高度
int titleBarHeight = contentTop - statusBarHeight

例子代码:
package com.cn.lhq;
import android.app.Activity;
import android.graphics.Rect;
import android.os.Bundle;
import android.util.Log;
import android.view.Window;
import android.widget.ImageView;
public class Main extends Activity {
	ImageView iv;
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		iv = (ImageView) this.findViewById(R.id.ImageView01);
		iv.post(new Runnable() {
			public void run() {
				viewInited();
			}
		});
		Log.v("test", "== ok ==");
	}
	private void viewInited() {
		Rect rect = new Rect();
		Window window = getWindow();
		iv.getWindowVisibleDisplayFrame(rect);
		int statusBarHeight = rect.top;
		int contentViewTop = window.findViewById(Window.ID_ANDROID_CONTENT)
				.getTop();
		int titleBarHeight = contentViewTop - statusBarHeight;
		// 测试结果:ok之后 100多 ms 才运行了
		Log.v("test", "=-init-= statusBarHeight=" + statusBarHeight
				+ " contentViewTop=" + contentViewTop + " titleBarHeight="
				+ titleBarHeight);
	}
}


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
<ImageView
android:id="@+id/ImageView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>

分享到:
评论

相关推荐

    获取分辨率,状态栏标题栏高度

    在Android开发中,获取屏幕分辨率、状态栏高度和标题栏高度是常见的需求,尤其是在自定义布局或者实现全屏效果时。下面将详细讲解如何实现这些功能。 首先,我们来看如何获取屏幕的分辨率。屏幕分辨率通常指的是...

    Android 获取屏幕、状态栏、标题栏的尺寸

    在Android开发中,准确地获取屏幕、状态栏和标题栏的尺寸是至关重要的,这有助于开发者创建适应不同设备和屏幕尺寸的应用。以下是一些关于如何获取这些尺寸的关键知识点。 1. **屏幕尺寸获取** - **DisplayMetrics...

    android获取屏幕,状态栏,标题栏宽高

    #### 三、获取标题栏高度 对于获取标题栏的高度,我们可以使用如下的方法计算得到: ```java int titleBarHeight = getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTop() - statusBarHeight; ``` 这里...

    Android动画隐藏标题栏全屏

    3. 当需要显示标题栏时,可以创建一个相反方向的动画,如`show_toolbar.xml`,然后在适当的时候启动它,恢复标题栏的高度。 除了平移动画,还可以结合其他动画类型,如缩放、透明度等,以创建更丰富的隐藏和显示...

    Android-获取手机屏幕大小屏幕分辨率屏幕密度导航栏高度标题栏高度

    5. 标题栏高度: 标题栏(通常在Activity顶部)的高度可以通过测量`ActionBar`或`Toolbar`的高度获取。如果是使用`AppCompatActivity`,可以获取到`SupportActionBar`对象,然后调用`getHeight()`方法。如果使用...

    Android 获取屏幕高度,标题高度,状态栏高度(实例代码)

    总的来说,获取屏幕高度、状态栏高度和标题栏高度是Android开发中的基础操作,了解这些可以帮助开发者精确控制界面布局,确保不同设备上的适配效果。在实际开发中,还需要考虑不同Android版本之间的兼容性问题,以及...

    Android获得控件和状态栏高度

    3. **计算标题栏高度**(如果有): ```java int contentViewTop = window.findViewById(Window.ID_ANDROID_CONTENT).getTop(); int titleBarHeight = contentViewTop - statusBarHeight; ``` - `Window.ID_...

    Android编程实现获取标题栏、状态栏的高度、屏幕大小及模拟Home键的方法

    下面的方法通过`getWindowVisibleDisplayFrame`来获取当前Activity可视区域的边界,然后通过计算content view的顶部位置减去状态栏高度得到标题栏高度。 ```java public int getTitleHeight(Activity activity) {...

    Android如何获取屏幕、状态栏及标题栏的高度详解

    在Android开发中,获取屏幕、状态栏...此外,Android的不同版本也可能影响获取状态栏高度的方法,因此推荐使用兼容性较好的方式。在获取到这些高度后,开发者可以据此调整界面元素的位置和大小,实现更精细的布局设计。

    android ListView向上滑动隐藏标题,下拉显示标题栏,完美解决滑动出现的空白问题。

    此外,为了防止滑动过程中出现空白,我们需要精确地计算和调整标题栏的高度,确保其与ListView的内容区域无缝衔接。 实现这个功能的关键步骤如下: 1. **设置滚动监听器**:为ListView添加OnScrollListener,重写...

    android 状态栏颜色设置

    然而,对于使用了`Theme.MaterialComponents`主题或者使用`androidx.appcompat.widget.Toolbar`作为自定义标题栏的情况,我们需要通过`AppCompatDelegate`进行设置。在Activity的`onCreate()`方法中加入以下代码: ...

    获取屏幕原始尺寸高度,包括虚拟功能键高度

    获取屏幕原始尺寸高度,包括虚拟功能键高度,获取 虚拟按键的高度,获得屏幕高度,标题栏高度,获得状态栏的高度,px转sp,sp转px

    仿京东上滑显示标题栏Demo

    在`onScroll()`方法中,我们可以获取到滚动的距离,并根据这个距离来改变标题栏的透明度或者高度。 其次,实现渐变效果的关键在于动画和布局管理。可以使用`ObjectAnimator`或者`ValueAnimator`来平滑地改变标题栏...

    Android 取得状态栏、任务栏高度的小例子

    总的来说,这个例子展示了在Android中如何获取状态栏和任务栏高度的基本步骤,这对于需要精确控制界面布局的应用来说是非常有用的。开发者可以根据这些信息来调整布局,确保内容不会被状态栏或任务栏遮挡,或者实现...

    自动隐藏和显示标题栏ListView

    在Android中,我们可以使用TranslationY属性来改变标题栏的高度,实现从顶部滑入或滑出的效果。配合Animation或Animator类,我们可以创建一个平滑的动画效果。例如,当用户上滑时,标题栏的TranslationY值逐渐增大,...

    Android ListView向上滑动隐藏标题,下拉显示标题栏,完美解决滑动出现的空白问题

    当用户滑动ListView时,会触发`onScroll()`方法,通过这个方法我们可以获取当前的滚动状态和位置。 2. **隐藏与显示标题栏**:在监听到滑动事件后,我们需要判断滑动的方向。如果用户上滑,我们就隐藏标题栏;如果...

    仿google+在列表滚动的时候显示或者隐藏标题栏

    在Android应用开发中,"仿google+在列表滚动的时候显示或者隐藏标题栏"是一个常见的交互设计,它提供了良好的用户体验,增强了界面的动态感。这种效果通常被称为“抽屉式”或者“滑动隐藏”标题栏,它使得标题栏在...

Global site tag (gtag.js) - Google Analytics