ActionBarCompat & Transparency

Я хотел бы сделать ActionBar в библиотеке поддержки полностью прозрачным, однако кажется, что изменение фонового рисунка будет недостаточным с момента стека фоновых элементов. Если вы установите полупрозрачный фон, вы получите фоновый фон по умолчанию.

Кто-нибудь знает способ удалить этот фон?

Вот что происходит:

Actionbar

Код для фона:

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

Как вы можете видеть, у drawable есть прозрачный синий цвет, который перекрывается с серым фоном по умолчанию.

Ответ 1

Хорошо, я нашел решение возиться с 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>
    
  • Используйте функцию Window для наложения ActionBar с помощью метода Support (игнорируйте предупреждение Eclipse относительно уровня API для константы, я использовал аннотацию SuppressLint для удаления предупреждения):

    @SuppressLint("InlinedApi") @Override protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    supportRequestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
    setContentView(R.layout.activity_home);}
    

Ответ 2

Ответ ChristianGuerrero велик, но вы должны прямо поставить элемент:

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

внутри стиля AppTheme. Тогда вам не нужно ничего добавлять в свой метод onCreate.