Удалить тень под панелью действий
Я использую 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 у меня есть тень под панелью действий, которую я не хочу. Что такое элемент стиля, чтобы он исчез?
Ответы
Ответ 1
Что такое элемент стиля, чтобы он исчез?
Чтобы удалить тень, добавьте это в свою тему приложения:
<style name="MyAppTheme" parent="android:Theme.Holo.Light">
<item name="android:windowContentOverlay">@null</item>
</style>
UPDATE:
Как заявил @Quinny898, на Android 5.0 это изменилось, вы должны называть setElevation(0)
на панели действий. Обратите внимание: если вы используете библиотеку поддержки, вы должны вызвать ее так:
getSupportActionBar().setElevation(0);
Ответ 2
Для 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>
Ответ 3
В Android 5.0 это изменилось, вам нужно вызвать setElevation (0) на панели действий. Обратите внимание: если вы используете библиотеку поддержки, вы должны вызвать ее так:
getSupportActionBar().setElevation(0);
Это не влияет на элемент стиля windowContentOverlay, поэтому никаких изменений в стилях не требуется
Ответ 4
добавить app:elevation="0dp"
в AppBarLayout для скрытия тени в панели приложений
Ответ 5
Если вы работаете с ActionBarSherlock
В вашей теме добавьте следующее:
<style name="MyTheme" parent="Theme.Sherlock">
....
<item name="windowContentOverlay">@null</item>
<item name="android:windowContentOverlay">@null</item>
....
</style>
Ответ 6
Вы должны установить приложение: 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>
Ответ 7
app:elevation="0dp"
но не
android:elevation="0dp"
работал у меня на android L
Ответ 8
У меня такая же проблема, и я успешно решил эту проблему. Все, что вам нужно сделать, это просто изменить высоту на 0 значений с плавающей запятой в том действии, в котором вы хотите удалить высоту.
Если вы хотите изменить его в действии под названием 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);
.
.
}
Ответ 9
Для разработчиков Xamarin, пожалуйста, используйте: SupportActionBar.Elevation = 0;
для AppCompatActivity
или ActionBar.Elevation = 0;
для некомпатных мероприятий
Ответ 10
Попробуйте это мне помогло без смены темы. Поместите свой AppBarLayout в любой макет. Надеюсь, это поможет вам
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.design.widget.AppBarLayout
android:id="@+id/app_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="false"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
android:layout_height="?attr/actionBarSize"
android:background="@color/white">
<ImageView
android:src="@drawable/go_grocery_logo"
android:layout_width="108dp"
android:layout_height="32dp" />
</android.support.v7.widget.Toolbar>
</android.support.design.widget.AppBarLayout>
</RelativeLayout>
Ответ 11
Для тех, кто работает с фрагментами, и он исчез после установки toolbar.getBackground().setAlpha(0);
или любого исчезновения, я думаю, что вам нужно довести ваш AppBarLayout до последнего в xml, поэтому его фрагмент, а затем AppBarLayout, будет relativelayout/constraint/linear, какой бы вы ни использовали.
Ответ 12
Вы можете избежать этого, игнорируя первый,
private boolean isSpinnerInitial = true; //As global variable
public void onItemSelected(xxx xxx, xxx xxx, xxx xxx, xxx xxx) {
if(isSpinnerInitial) {
isSpinnerInitial = false;
}
// Write your code here
}
Ответ 13
Решение для Kotlin (Android 3.3, Kotlin 1.3.20)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
supportActionBar!!.elevation = 0f
}