您的位置:首页 > 移动开发

Android App 隐藏标题栏+状态栏+导航栏+获取状态栏的三种方法

2017-02-14 10:00 615 查看


1. 隐藏当前Activity标题栏

    在当前Activity中调用:this.requestWindowFeature(Window.FEATURE_NO_TITLE);


2. 隐藏当前Activity状态栏(Status Bar)


2.1 Android 4.0 and Lower

[java] view
plain copy

 





public class MainActivity extends Activity {  

  

    @Override  

    protected void onCreate(Bundle savedInstanceState) {  

        super.onCreate(savedInstanceState);  

        // If the Android version is lower than Jellybean, use this call to hide  

        // the status bar.  

        if (Build.VERSION.SDK_INT < 16) {  

            getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,  

                    WindowManager.LayoutParams.FLAG_FULLSCREEN);  

        }  

        setContentView(R.layout.activity_main);  

    }  

    ...  

}  


2.2 Android 4.1 and Higher

[java] view
plain copy

 





View decorView = getWindow().getDecorView();  

// Hide the status bar.  

int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;  

decorView.setSystemUiVisibility(uiOptions);  

// Remember that you should never show the action bar if the  

// status bar is hidden, so hide that too if necessary.  

ActionBar actionBar = getActionBar();  

actionBar.hide();  


3. 隐藏当前Activity界面的导航栏(NavigationBar)

    在Android4.0及以后版本中,可通过以下方法隐藏NavigationBar

[java] view
plain copy

 





View decorView = getWindow().getDecorView();  

// Hide both the navigation bar and the status bar.  

// SYSTEM_UI_FLAG_FULLSCREEN is only available on Android 4.1 and higher, but as  

// a general rule, you should design your app to hide the status bar whenever you  

// hide the navigation bar.  

int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION  

              | View.SYSTEM_UI_FLAG_FULLSCREEN;  

decorView.setSystemUiVisibility(uiOptions);  


4. 隐藏所有Activity界面的标题栏

 修改AndroidManifest.xml 

 在application 标签中添加a

    android:theme="@android:style/Theme.NoTitleBar"


5. 隐藏所有Activity界面的TitleBar 和StatusBar 

  修改AndroidManifest.xml 

  在application 标签中添加 

  Android:theme="@android:style/Theme.NoTitleBar.Fullscreen"、、

获取状态栏的三种方法


通过反射获取

public int getStatusBarHeight(){
if(statusBarHeight==0){
Class<?> c;
try
{
c = Class.forName("com.android.internal.R$dimen");
Object o = c.newInstance();
Field field = c.getField("status_bar_height");
int x = (Integer) field.get(o);
statusBarHeight = getResources().getDimensionPixelSize(x);
}catch(Exception e)
{
e.printStackTrace();
}
}
return statusBarHeight;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17


根据资源ID获取

public int getStatusBarHeight1(){
if(statusBarHeight==0){
int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
if(resourceId>0){
statusBarHeight = getResources().getDimensionPixelSize(resourceId);
}
}
return statusBarHeight;
}
1
2
3
4
5
6
7
8
9
1
2
3
4
5
6
7
8
9


通过当前窗口对象获取,貌似有局限性

public int getStatusBarHeight2(){
if(statusBarHeight==0){
Rect rect = new Rect();
Window window = getWindow();
window.getDecorView().getWindowVisibleDisplayFrame(rect);
statusBarHeight = rect.top;
}
return statusBarHeight;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: