使用ActionBarSherlock时ActionBar下的阴影

时间:2012-09-09 18:33:40

标签: android android-actionbar actionbarsherlock

我正在使用ActionBarSherlock。在Android 3.0+上,ActionBar下有一个微妙的阴影。但不是年长的机器人。

问题是,android:windowContentOverlay中设置的阴影出现在活动窗口的顶部。在旧的Androids上,ActionBar是Window的一部分。因此阴影覆盖在ActionBar的顶部,而不是覆盖ActionBar下的内容。

有没有办法解决这个问题,而无需手动将阴影插入每个Activity的布局?

1 个答案:

答案 0 :(得分:1)

正如@wingman在评论中暗示的那样,我在我的基地setContentView(...)中覆盖了Activity,如下所示:

@Override
public void setContentView(int layoutResId) {
    View view = getLayoutInflater().inflate(layoutResId, null);
    setContentView(view);
}

@Override
public void setContentView(View view) {
    int wrapContent = ViewGroup.LayoutParams.WRAP_CONTENT;
    int matchParent = ViewGroup.LayoutParams.MATCH_PARENT;
    view.setLayoutParams(new ViewGroup.LayoutParams(matchParent, matchParent));

    View shadow = new View(this);
    shadow.setBackgroundResource(R.drawable.action_bar_shadow);
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(matchParent,
            wrapContent);
    shadow.setLayoutParams(params);

    RelativeLayout container = new RelativeLayout(this);
    container.addView(view);
    container.addView(shadow);

    super.setContentView(container);
}