web-dev-qa-db-ja.com

アクションバーの下の影を削除

私は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では、アクションバーの下には必要ないシャドウがあります。 スタイルを消すための項目は何ですか?

196
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);
468
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>

5.0より前のAndroidの場合は、これもアプリのテーマに追加します。

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

Android 5.0ではこれが変更され、アクションバーでsetElevation(0)を呼び出す必要があります。サポートライブラリを使用している場合は、次のようにそれを呼び出す必要があります。

getSupportActionBar().setElevation(0);

WindowContentOverlayスタイル項目の影響を受けないため、スタイルを変更する必要はありません。

102
Kieron

appBarLayoutにapp:elevation="0dp"を追加して、アプリケーションバーの影を隠します。

49
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:Android.support.design.widget.AppBarLayoutでelevetor = "0dp"を設定しなければなりません、そしてそれはそれを動作します: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>
23
Nguyên Phạm
app:elevation="0dp" 

だがしかし

Android:elevation="0dp"

アンドロイドLで私のために働いた

9
YTerle

私はこれと同じ問題を抱えています、そして私はこの問題をうまく解決しました。必要なのは、標高を削除したいアクティビティで標高を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);
    .
    .
    }
2
shubham gupta

Xamarin開発者の場合、AppCompatActivityにはSupportActionBar.Elevation = 0;を、非準拠のアクティビティにはActionBar.Elevation = 0;を使用してください。

1
BYISHIMO Audace

これを試してください。テーマを変更せずに役立ちました。 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>
1
Rahul

フラグメントを処理していてtoolbar.getBackground().setAlpha(0);を設定した後に表示が消えた場合は、AppBarLayoutをxmlの最後に移動する必要があると思います。

0
Bowie Chang

Kotlin(Android 3.3、Kotlin 1.3.20)の解決策

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