<div class="blogpost-body" id="cnblogs_post_body">
<p style="color:#333333;font-family:'微软雅黑', Arial, Helvetica, sans-serif;font-size:14px;line-height:28px;"> <span style="color:#333333;font-family:'微软雅黑', Arial, Helvetica, sans-serif;font-size:14px;line-height:28px;"><strong>获取状态栏高度</strong></span><br></p>
<p style="color:#333333;font-family:'微软雅黑', Arial, Helvetica, sans-serif;font-size:14px;line-height:28px;"> <span style="color:#333333;font-family:'微软雅黑', Arial, Helvetica, sans-serif;font-size:14px;line-height:28px;"><strong>一、传统方式:有时获取为0,解决方法看 二</strong></span></p>
<p style="color:#333333;font-family:'微软雅黑', Arial, Helvetica, sans-serif;font-size:14px;line-height:28px;"> </p>
<table class="highlighttable" style="border-style:solid;border-color:#cccccc;border-collapse:collapse;border-spacing:0px;color:#333333;font-family:'微软雅黑', Arial, Helvetica, sans-serif;font-size:14px;line-height:28px;"><tbody><tr><td class="linenos" style="border-right-style:solid;border-right-color:#cccccc;width:25px;text-align:right;">
<div class="linenodiv" style="font-family:'微软雅黑', Arial, Helvetica, sans-serif;">
<pre class="blockcode">1
2
3
4
</pre>
</div> </td><td class="code">
<div class="highlight" style="font-family:'微软雅黑', Arial, Helvetica, sans-serif;">
<pre class="blockcode"><span class="err" style="border:1px solid #ff0000;">代码</span>
<span class="n">Rect</span> <span class="n">frame</span> <span class="o" style="color:#666666;">=</span> <span class="k" style="color:#008000;font-weight:bold;">new</span> <span class="n">Rect</span><span class="o" style="color:#666666;">();</span>
<span class="n">getWindow</span><span class="o" style="color:#666666;">().</span><span class="na" style="color:#7d9029;">getDecorView</span><span class="o" style="color:#666666;">().</span><span class="na" style="color:#7d9029;">getWindowVisibleDisplayFrame</span><span class="o" style="color:#666666;">(</span><span class="n">frame</span><span class="o" style="color:#666666;">);</span>
<span class="kt" style="color:#b00040;">int</span> <span class="n">statusBarHeight</span> <span class="o" style="color:#666666;">=</span> <span class="n">frame</span><span class="o" style="color:#666666;">.</span><span class="na" style="color:#7d9029;">top</span><span class="o" style="color:#666666;">;</span> </pre>
</div> </td></tr></tbody></table>
<p> </p>
<p> </p>
<p style="font-family:'微软雅黑', Arial, Helvetica, sans-serif;font-size:14px;line-height:28px;"><span style="font-family:'微软雅黑', Arial, Helvetica, sans-serif;font-size:14px;line-height:28px;"><strong><span style="color:#ff0000;">二、4.0.3之后可能获取为0</span></strong></span></p>
<p style="color:#333333;font-family:'微软雅黑', Arial, Helvetica, sans-serif;font-size:14px;line-height:28px;"> </p>
<table class="highlighttable" style="border-style:solid;border-color:#cccccc;border-collapse:collapse;border-spacing:0px;color:#333333;font-family:'微软雅黑', Arial, Helvetica, sans-serif;font-size:14px;line-height:28px;"><tbody><tr><td class="linenos" style="border-right-style:solid;border-right-color:#cccccc;width:25px;text-align:right;"> </td><td class="code">
<div class="highlight" style="font-family:'微软雅黑', Arial, Helvetica, sans-serif;">
<pre class="blockcode">public int getBarHeight(){
Class<?> c = null;
Object obj = null;
Field field = null;
int x = 0, sbar = 38;//默认为38,貌似大部分是这样的
try {
c = Class.forName("com.android.internal.R$dimen");
obj = c.newInstance();
field = c.getField("status_bar_height");
x = Integer.parseInt(field.get(obj).toString());
sbar = getResources().getDimensionPixelSize(x);
} catch (Exception e1) {
e1.printStackTrace();
}
return sbar;
}</pre>
</div> </td></tr></tbody></table>
<p> </p>
<p> </p>
<p style="color:#333333;font-family:'微软雅黑', Arial, Helvetica, sans-serif;font-size:14px;line-height:28px;"> //---------------------------------------------</p>
<p style="color:#333333;font-family:'微软雅黑', Arial, Helvetica, sans-serif;font-size:14px;line-height:28px;"> <br></p>
<p style="color:#333333;font-family:'微软雅黑', Arial, Helvetica, sans-serif;font-size:14px;line-height:28px;"> 1.获取状态栏高度:</p>
<p style="color:#333333;font-family:'微软雅黑', Arial, Helvetica, sans-serif;font-size:14px;line-height:28px;"> decorView是window中的最顶层view,可以从window中获取到decorView,然后decorView有个getWindowVisibleDisplayFrame方法可以获取到程序显示的区域,包括标题栏,但不包括状态栏。<br style="line-height:0;"> 于是,我们就可以算出状态栏的高度了。</p>
<table class="highlighttable" style="border-collapse:collapse;border-spacing:0px;border:1px solid #cccccc;color:#333333;font-family:'微软雅黑', Arial, Helvetica, sans-serif;font-size:14px;line-height:28px;"><tbody><tr><td class="linenos" style="width:25px;text-align: |
|