getBackground().setAlpha()導(dǎo)致其它標(biāo)題欄透明度也被影響

最近在做的項(xiàng)目包含了一個(gè)標(biāo)題欄,可隨著ScrollView滑動(dòng)而改變自身透明度。使用的正是getBackground().setAlpha來(lái)實(shí)現(xiàn),在Android 5.0以下版本一直沒(méi)問(wèn)題,但在5.0以上系統(tǒng)時(shí),就會(huì)導(dǎo)致其他共用一個(gè)資源的布局(例如:@color/white)透明度都跟對(duì)標(biāo)題欄被改變了。

例如,使用getBackground().setAlpha來(lái)改變ll_title_bar的透明度后,ll_content的透明度也會(huì)跟著被改變。

在網(wǎng)上找了資料才知道,在布局中多個(gè)控件同時(shí)使用一個(gè)資源的時(shí)候,這些控件會(huì)共用一個(gè)狀態(tài),例如ColorState,如果你改變了一個(gè)控件的狀態(tài),其他的控件都會(huì)接收到相同的通知。這時(shí)我們可以使用mutate()方法使該控件狀態(tài)不定,這樣不定狀態(tài)的控件就不會(huì)共享自己的狀態(tài)了。

解決方法:

getBackground().setAlpha

改為

titleLayout.getBackground().mutate().setAlpha(255);

http://blog.csdn.net/myatlantis/article/details/49336587

如果以上方法不好使,那么就給這個(gè)標(biāo)題欄單獨(dú)設(shè)置一個(gè)背景(唯一的、不被共用的)。如下
    <RelativeLayout
        android:id="@+id/rl_toolbar"
        android:layout_width="match_parent"
        android:layout_height="54dp"
        android:background="@drawable/shape_toolbar_bg">

http://www.lxweimin.com/p/65591a718cdc

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容