2

私はActionBarSherlockを使用しています。Android 3.0 以降では、ActionBar の下に微妙な影があります。ただし、古い Android ではできません。

問題は、設定された影android:windowContentOverlayがアクティビティ ウィンドウの上部に表示されることです。古い Android では、ActionBar は Window の一部です。そのため、ActionBar の下にコンテンツを重ねるのではなく、ActionBar の上に影を重ねます。

すべてのアクティビティのレイアウトに手動で影を挿入せずに、これを解決する方法はありますか?

4

1 に答える 1

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);
}
于 2012-09-09T20:04:03.130 に答える