定義乙個適配沉浸式狀態列 的 TitleBar

2021-08-16 19:38:38 字數 1557 閱讀 2345

我使用自定義 framelayout 後inflate乙個布局的方式來靜態的使用乙個寫好的布局,免去手寫布局的麻煩

public class titlebar extends framelayout {
layoutinflater.from(context).inflate(r.layout.myview_title_bar

, this);

//直接改變布局,從而靜態的使用子控制項\

xmlns:

android

=""xmlns:

=""android

:layout_width=

"match_parent"

android

:layout_height=

"match_parent"

android

:background=

"#f00"

android

:orientation=

"vertical"

>

android

:layout_width=

"match_parent"

android

:layout_height=

"wrap_content"

android

:background=

"@color/blue"

android

:fitssystemwindows=

"true"

:title_text=

"標題欄"

/>

android

:layout_width=

"match_parent"

android

:layout_height=

"300dp"

android

:background=

"#ff0"

android

:text=

"主體內容\n第二行\n第三行\n第四行"

/>

android

:layout_width=

"match_parent"

android

:layout_height=

"wrap_content"

/>

看到標題欄是白色的,是因為標題欄是藍色的framelayout中巢狀的titlebar布局是白色的。

發現頂部狀態列變成了藍色,看來這是自定義titlebar的問題,fitssystemwindows屬性讓titlebar的paddingtop增加了乙個狀態列高度,但由於titlebar的子view高度固定了,導致titlebar本身的藍色漏出來。若要避免這種情況可以1、將titlebar子view的高度固定為撐滿,而titlebar高度設為固定,2、將titlebar的背景色設為同子view的顏色。3、改為給titlebar子view設定fitssystemwindows屬性。

沉浸式狀態列適配不同的版本

先帖 在慢慢的分析 這個方法在oncreat 方法中呼叫,也可以在baseactivity中呼叫private voidinitwindows 5.0 及以上if build.version.sdk int build.version codes.lollipop else if build.ver...

沉浸式狀態列的實現

public class setstatusbartranslucent method setstatusbarcolor.invoke activity.getwindow 0x00000000 catch nosuchmethodexception e catch illegalargument...

沉浸式狀態列的實現

在android 4.4之前,我們的應用沒發改變手機的狀態列的顏色,當我們開啟應用的時候,在螢幕的頂部有一天黑色的狀態列,和應用的風格非常不協調,為提供更好的介面互動,google在android 4.4以後提供了設定沉浸式狀態列的方法,對於沉浸式狀態列的這個面工資存在爭議,實際的效果其實是透明的狀...