2012-09-09 53 views
2

我正在使用ActionBarSherlock。在Android 3.0+上,ActionBar下有一個微妙的陰影。但不適用於較舊的Android。使用ActionBarSherlock時ActionBar下的陰影

問題是在android:windowContentOverlay中設置的陰影出現在活動窗口的頂部。而在較老的Android上,ActionBar是Window的一部分。因此,陰影覆蓋了ActionBar的頂部,而不是覆蓋ActionBar下的內容。

有沒有辦法解決這個問題,而不是手動插入陰影到每個活動的佈局?

+0

要麼你可以改變ActionBarSherlock佈局文件,或創建一個自定義活動類陰影添加到佈局(FrameLayout裏有陰影可繪製),並從中擴展其他活動。 –

+0

謝謝,我會做第二個。我感覺很蠢,現在看起來很明顯:) – fhucho

回答

1

由於@wingman在評論中暗示,我在基地Activity overrided setContentView(...)這樣的:

@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); 
}