最近在做的項(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">