web-dev-qa-db-ja.com

ActionBarの背景画像

Holo Lightテーマを継承し、ActionBarの背景を次のようにカスタマイズしました。

Styles.xmlのコンテンツ

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="ActionBar" parent="@Android:style/Widget.Holo.ActionBar">
<item name="Android:background">@drawable/actionbar_background</item>
</style>
<style name="MyTheme" parent="@Android:style/Theme.Holo.Light">
<item name="Android:actionBarStyle">@style/ActionBar</item>
</style>
</resources>

Actionbar_background.xmlのコンテンツ

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:src="@raw/actionbar_background"
Android:tileMode="repeat" />

繰り返される代わりに、画像が引き伸ばされます。なぜAndroid:tileMode = "repeat"が適用されないのでしょうか?

前もって感謝します

44
rnoway

OK、#Android-dev IRCチャンネルのRomain Guyのおかげで、ハニカムの既知のバグ/ Android 3.0は次のリリースで修正されます。それ以来、唯一の解決策はコードからそれを行うことであり、動作します:-)

 final ActionBar actionBar = getActionBar(); 
 BitmapDrawable background = new BitmapDrawable (BitmapFactory.decodeResource(getResources(), R.raw.actionbar_background)); 
 background.setTileModeX(Android.graphics.Shader.TileMode.REPEAT); 
 actionBar.setBackgroundDrawable(background);
43
rnoway
Drawable d=getResources().getDrawable(R.drawable.background_image_name);  
getActionBar().setBackgroundDrawable(d);

上記のコードは、アクションバーの背景画像を設定します。
それが役に立てば幸い。

41
Raj Trivedi

これは簡単にできます。アクションバーの背景画像を変更する場合は、このコードをres/styles.xmlファイルに配置します。

 <style name="Theme.MyAppTheme" parent="@Android:style/Theme.Holo">
        <item name="Android:actionBarStyle">@style/Theme.MyAppTheme.ActionBar</item>
    </style>

    <style name="Theme.MyAppTheme.ActionBar" parent="@Android:style/Widget.Holo.ActionBar">
        <item name="Android:background">@drawable/top_black_bg</item>
    </style>

このためには、「描画可能」フォルダから画像を選択する必要があります。ここでは、画像「tp_black_bg.png」を選択します

その後、このテーマをAndroidManifest.xmlファイルに宣言することを忘れないでください

    <application
        .
        .
        .
        Android:theme="@style/Theme.MyAppTheme" >.............</application>

これで、XMLレイアウトファイルを再び開くことができ、効果を簡単に確認できます。同様に、ActionBarの背景色を変更することもできます。

ありがとう。

5
mActionBar.setBackgroundDrawable(getResources().getDrawable(R.drawable.navbar));
2
Naskov

下位互換性のために、Android.support.v7のgetSupportActionBar()を使用します。

2
Ron