0
点赞
收藏
分享

微信扫一扫

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


1. 隐藏当前Activity标题栏

 

 

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

 

 

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

2.1 Android 4.0 and Lower

 

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

 

 

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

 

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;
}

 

根据资源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;
}

 

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

public int getStatusBarHeight2(){
    if(statusBarHeight==0){
        Rect rect = new Rect();
        Window window = getWindow();
        window.getDecorView().getWindowVisibleDisplayFrame(rect);
        statusBarHeight = rect.top;
    }
    return statusBarHeight;
}

 

 

 

 

举报

相关推荐

0 条评论