it-swarm.com.ru

Удалить тень под панелью действий

Я использую actionbarsherlock. Часть кода ниже отвечает за изменение фона на пользовательский.

<style name="Widget.Styled.ActionBar" parent="Widget.Sherlock.ActionBar">
    <item name="background">@drawable/actionbar_bg</item>
    <item name="Android:background">@drawable/actionbar_bg</item>
    <...>  
</style>

<style name="Theme.MyApp" parent="@style/Theme.Sherlock.Light">
    <item name="actionBarStyle">@style/Widget.Styled.ActionBar</item>
    <item name="Android:actionBarStyle">@style/Widget.Styled.ActionBar</item>
    <..>
</style>

И это работает для actionbarsherlock (в версиях ниже сота). Но в ICS у меня есть тень под панелью действий, которая мне не нужна. Какой элемент стиля, чтобы он исчез?

191
Michał K

Что это за стиль, чтобы он исчез?

Чтобы удалить тень, добавьте это в тему вашего приложения:

<style name="MyAppTheme" parent="Android:Theme.Holo.Light">
    <item name="Android:windowContentOverlay">@null</item>
</style>

ОБНОВЛЕНИЕ: Как сказано в @ Quinny898, в Android 5.0 это изменилось, вы должны вызвать setElevation(0) на панели действий. Обратите внимание, что если вы используете библиотеку поддержки, вы должны вызывать ее следующим образом:

getSupportActionBar().setElevation(0);
467
Tomer Mor

Для Android 5.0, если вы хотите установить его непосредственно в стиль, используйте:

<item name="Android:elevation">0dp</item>

и для поддержки совместимости библиотеки используйте:

<item name="elevation">0dp</item>

Пример стиля для светлой темы AppCompat:

<style name="Theme.MyApp.ActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
    <!-- remove shadow below action bar -->
    <!-- <item name="Android:elevation">0dp</item> -->
    <!-- Support library compatibility -->
    <item name="elevation">0dp</item>
</style>

Затем примените этот пользовательский стиль ActionBar к вашей теме приложения:

<style name="Theme.MyApp" parent="Theme.AppCompat.Light">
    <item name="actionBarStyle">@style/Theme.MyApp.ActionBar</item>
</style>

Для Android до 5.0 добавьте это тоже в тему вашего приложения:

<!-- Remove shadow below action bar Android < 5.0 -->
<item name="Android:windowContentOverlay">@null</item>
124
Sloosh

В Android 5.0 это изменилось, вы должны вызвать setElevation (0) на панели действий. Обратите внимание, что если вы используете библиотеку поддержки, вы должны вызывать ее следующим образом:

getSupportActionBar().setElevation(0);

На него не влияет элемент стиля windowContentOverlay, поэтому никаких изменений в стилях не требуется 

102
Kieron

добавить app:elevation="0dp" в AppBarLayout для сокрытия тени в панели приложений

44
Vijay Vavdiya

Если вы работаете с ActionBarSherlock

В вашей теме добавьте это:

<style name="MyTheme" parent="Theme.Sherlock">
    ....
    <item name="windowContentOverlay">@null</item>
    <item name="Android:windowContentOverlay">@null</item>
    ....
</style>
39
Dmitry Zaytsev

Вы должны установить app: elevetor = "0dp" в Android.support.design.widget.AppBarLayout, и тогда оно будет работать: D 

<Android.support.design.widget.AppBarLayout
    app:elevation="0dp"... >

    <Android.support.v7.widget.Toolbar
        Android:id="@+id/toolbar"
        Android:layout_width="match_parent"
        Android:layout_height="?attr/actionBarSize"
        Android:background="@Android:color/transparent"
        app:popupTheme="@style/AppTheme.PopupOverlay" >


    </Android.support.v7.widget.Toolbar>

</Android.support.design.widget.AppBarLayout>
22
Nguyên Phạm
app:elevation="0dp" 

но нет

Android:elevation="0dp"

работал для меня на Android L

7
YTerle

У меня такая же проблема, и я успешно решил эту проблему. Все, что вам нужно сделать, это просто изменить высоту на значение с плавающей запятой в том действии, в котором вы хотите удалить высоту.

Если вы хотите изменить его в действии, называемом MyActivity.Java, вы должны сначала получить ActionBar.

Сначала импортируйте класс ActionBar

import Android.support.v7.app.ActionBar;

после импорта вы должны инициализировать переменную панели действий и установить ее высоту на 0.

 private ActionBar toolbar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    .
    .
    toolbar=getSupportActionBar();
    toolbar.setElevation(0);
    .
    .
    }
2
shubham gupta

Для разработчиков Xamarin, пожалуйста, используйте: SupportActionBar.Elevation = 0; для AppCompatActivity или ActionBar.Elevation = 0; для некомпатных действий

1
BYISHIMO Audace

Для тех, кто работает с фрагментами, и он исчез после установки toolbar.getBackground().setAlpha(0); или любого исчезновения, я думаю, что вы должны довести свой AppBarLayout до последнего в xml, поэтому его Fragment затем AppBarLayout, а затем относительныйlayout/constraint/linear, который вы используете.

0
Bowie Chang

Решение для Kotlin (Android 3.3, Kotlin 1.3.20)

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    supportActionBar!!.elevation = 0f
}
0
zeeshan