2011年8月 3日

透過なActionBar

HoneycombのActionBarはそれはそれで便利なのですが、Holoでは上下黒帯で圧迫感があって、Holo.Lightでは灰色のツール感が野暮ったいなという際に変える方法3種をご紹介。

1. ActionBarの背景画像だけ変える。
→Activity#getActionBar().setBackgroundDrawable(Drawable d);する。(コード割愛)

2. rootView配下のLinearLayoutにsetBackgroundResource(int resId)する。
20110803_trans_actionbar.jpg

3. HoloかHolo.Lightをベースにwindowの背景色を透明にする。
20110803_trans_window.jpg

以下、コード。

○2. rootView配下のLinearLayoutにsetBackgroundResource(int resId)する。

【参考】Kazzzの日記:Activityのビュー階層とコンテンツルート(View)を取得する
http://d.hatena.ne.jp/Kazzz/20100828/p1

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 
         ViewGroup decor = (ViewGroup)this.getWindow().getDecorView();
         LinearLayout rootLinear = (LinearLayout)decor.getChildAt(0);
         rootLinear.setBackgroundResource(R.drawable.wallpaper);
    }

○3. HoloかHolo.Lightをベースにwindowの背景色を透明にする。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style
        name="MyHoloLight"
        parent="android:Theme.Holo.Light">
        <item
            name="android:windowBackground">@android:color/transparent</item>
        <item
            name="android:windowIsTranslucent">true</item>
    </style>
</resources>

3.は使いどころが難しいですかね。

コメントする