【发布时间】:2014-09-22 20:00:29
【问题描述】:
我正在使用 ScrollView 更改片段中的 ActionBar 背景。我有一个 ScrollView 侦听器,它根据滚动距离更改分层列表中项目的 alpha。操作栏实际上效果很好。但是,导航抽屉背景会受到此 alpha 更改的影响,我不知道为什么;导航抽屉背景变得不可见。我可以在运行 Android L 的 Nexus 7 上轻松重现此问题,但在某些 4.4 设备上并非总是如此。
主要部分是:
ActionBar actionBar = activity.getSupportActionBar();
LayerDrawable mActionBarBg = (LayerDrawable) getResources().getDrawable(R.drawable.background_actionbar);
if (mActionBarBg != null) {
setActionBarBgAlpha(0);
actionBar.setBackgroundDrawable(mActionBarBg);
}
Alpha 计算器是这样的:
scrollView.setOnScrollChangedLitstener(new OnScrollChangedListener() {
@Override
public void onScrollChanged(int l, int t, int oldl, int oldt) {
t = Math.max(t, 0);
endpointHeader.setTranslationY(endpointHeader.getTop() + (t * 0.25f));
mScrollAlpha = (int) Math.min(alphaToHeightRatio * t, 255);
updateActionBarElemsAlpha(mScrollAlpha);
}
});
其他几种方法:
private void updateActionBarElemsAlpha(int updatedAlpha){
if(mActionBarTitleColor != null){
mActionBarTitleColor.setAlpha(updatedAlpha);
mActionBarTitleView.setTextColor(mActionBarTitleColor.getColor());
}
setActionBarBgAlpha(updatedAlpha);
}
private void setActionBarBgAlpha(int alpha){
if(mActionBarBg != null){
mActionBarBg.getDrawable(1).setAlpha(alpha);
mActionBarBg.getDrawable(2).setAlpha(alpha);
}
}
background_actionbar.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@drawable/gradient" />
<item android:drawable="@color/grey_divider"/>
<item android:bottom="2dp"
android:drawable="@color/White"/>
</layer-list>
【问题讨论】:
标签: android android-actionbar navigation-drawer