Android开发之android4.4沉浸式状态栏后toolbar和状态栏重复(重叠,覆盖)的bug
生活随笔
收集整理的這篇文章主要介紹了
Android开发之android4.4沉浸式状态栏后toolbar和状态栏重复(重叠,覆盖)的bug
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
我們看下android4.4的手機沉浸式狀態(tài)欄的效果圖:
讓所有的activity繼承baseActivity,然后在baseactivity里面為重復(fù)的高度添加一個狀態(tài)欄高度的view將toolbar頂下去即可。
如果你的activity沒有繼承baseActivity,那么你就只有在每個Activity的setContentView后面添加如下代碼。
看不懂可以聯(lián)系我。
@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);//應(yīng)用豎直屏幕顯示setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);setContentView(getLayoutResId());//判斷api19版本,填充狀態(tài)欄高度這個方法一定要在setContentView后調(diào)用if (android.os.Build.VERSION.SDK_INT == Build.VERSION_CODES.KITKAT) {//填充重疊的部分addMoreView();}initView(savedInstanceState);if (this instanceof IBaseView) {mPresenterImpl.onAttach((V) this);}}/*** 添加一個和狀態(tài)欄一樣高度的view將toolbar頂下去*/private void addMoreView() {//獲取windowphone下的decorViewViewGroup decorView = (ViewGroup) getWindow().getDecorView();int count = decorView.getChildCount();//判斷是否已經(jīng)添加了statusBarViewif (count > 0 && decorView.getChildAt(count - 1) instanceof TextView) {decorView.getChildAt(count - 1).setBackgroundColor(Color.parseColor("#8B1C21"));} else {//新建一個和狀態(tài)欄高寬的viewView statusView = createStatusBarView();decorView.addView(statusView);}ViewGroup rootView = (ViewGroup) ((ViewGroup) findViewById(android.R.id.content)).getChildAt(0);//rootview不會為狀態(tài)欄留出狀態(tài)欄空間ViewCompat.setFitsSystemWindows(rootView, true);rootView.setClipToPadding(true);}/*** 創(chuàng)建一個與狀態(tài)看一樣高度的view** @return 返回view*/private View createStatusBarView() {// 繪制一個和狀態(tài)欄一樣高的矩形TextView statusBarView = new TextView(this);LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, getStatusBarHeight());statusBarView.setLayoutParams(params);statusBarView.setBackgroundColor(Color.parseColor("#8B1C21"));return statusBarView;}/*** 拿到狀態(tài)欄的高度** @return 返回高度*/private int getStatusBarHeight() {Class c;try {c = Class.forName("com.android.internal.R$dimen");Object obj = c.newInstance();Field field = c.getField("status_bar_height");int x = Integer.parseInt(field.get(obj).toString());LogUtils.e("打印高度:" + getResources().getDimensionPixelSize(x));return getResources().getDimensionPixelSize(x);} catch (Exception e) {e.printStackTrace();}return 0;}?
在看下修復(fù)后android4.4手機的效果:
?
?
感謝原博主:https://www.jianshu.com/p/752f4551e134
總結(jié)
以上是生活随笔為你收集整理的Android开发之android4.4沉浸式状态栏后toolbar和状态栏重复(重叠,覆盖)的bug的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 马斯克继续“膨胀”!
- 下一篇: 沃尔沃汽车2月在华销量超1.3万辆 同比