11

サポート ライブラリの ActionBar を完全に透明にしたいのですが、背景がスタックするため、背景のドローアブルを変更しても十分ではないようです。半透明の背景を配置すると、その背後にデフォルトの背景が表示されます。

その背景を削除する方法を知っている人はいますか?

これが起こることです:

アクションバー

バックグラウンド ドローアブルのコード:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#66336688"/>
</shape>

ご覧のとおり、ドローアブルには、デフォルトの灰色の背景と重なる透明な青色があります。

4

2 に答える 2

22

わかりました、SDK をいじっているソリューションを見つけました。それは非常に簡単なようです、あなたは3つのことをする必要があります:

  • 私の質問に示されているように、背景のドローアブルを作成します。
  • 次のように ActionBar スタイルを作成します。

    <!-- Application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light">
        <item name="android:actionBarStyle">@style/MyActionBar</item>
    
        <!-- Support library compatibility -->
        <item name="actionBarStyle">@style/MyActionBar</item>
    </style>
    
    <!-- ACTION BAR STYLES -->
    <style name="MyActionBar" parent="@style/Widget.AppCompat.ActionBar">
        <item name="android:background">@drawable/actionbar_background</item>
        <item name="android:windowActionBarOverlay">true</item>
    
        <!-- Support library compatibility -->
        <item name="background">@drawable/actionbar_background</item>
        <item name="windowActionBarOverlay">true</item>
    </style>
    
  • Support メソッドを使用して、ActionBar オーバーレイに Window 機能を使用します (定数の API レベルに関する Eclipse の警告は無視してください。警告を削除するために SuppressLint 注釈を使用しました)。

    @SuppressLint("InlinedApi") @Override protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    supportRequestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
    setContentView(R.layout.activity_home);}
    
于 2013-08-22T07:28:43.430 に答える
6

ChristianGuerreroの回答は素晴らしいですが、アイテムを直接配置する必要があります:

<item name="android:windowActionBarOverlay">true</item>

AppTheme スタイル内。その後、 onCreate メソッドに何も追加する必要はありません。

于 2014-01-19T14:27:33.053 に答える