私は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では、アクションバーの下には必要ないシャドウがあります。 スタイルを消すための項目は何ですか?
それを消すためのスタイルアイテムは何ですか?
影を消すには、これをアプリのテーマに追加します。
<style name="MyAppTheme" parent="Android:Theme.Holo.Light">
<item name="Android:windowContentOverlay">@null</item>
</style>
更新: @ Quinny898が述べているように、Android 5.0ではこれが変更されました。アクションバーでsetElevation(0)
を呼び出す必要があります。サポートライブラリを使用している場合は、次のようにそれを呼び出す必要があります。
getSupportActionBar().setElevation(0);
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>
Android 5.0ではこれが変更され、アクションバーでsetElevation(0)を呼び出す必要があります。サポートライブラリを使用している場合は、次のようにそれを呼び出す必要があります。
getSupportActionBar().setElevation(0);
WindowContentOverlayスタイル項目の影響を受けないため、スタイルを変更する必要はありません。
appBarLayoutにapp:elevation="0dp"
を追加して、アプリケーションバーの影を隠します。
ActionBarSherlockを使用している場合
あなたのテーマでこれを追加します。
<style name="MyTheme" parent="Theme.Sherlock">
....
<item name="windowContentOverlay">@null</item>
<item name="Android:windowContentOverlay">@null</item>
....
</style>
あなたは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>
app:elevation="0dp"
だがしかし
Android:elevation="0dp"
アンドロイドLで私のために働いた
私はこれと同じ問題を抱えています、そして私はこの問題をうまく解決しました。必要なのは、標高を削除したいアクティビティで標高を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);
.
.
}
Xamarin開発者の場合、AppCompatActivity
にはSupportActionBar.Elevation = 0;
を、非準拠のアクティビティにはActionBar.Elevation = 0;
を使用してください。
これを試してください。テーマを変更せずに役立ちました。 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>
フラグメントを処理していてtoolbar.getBackground().setAlpha(0);
を設定した後に表示が消えた場合は、AppBarLayoutをxmlの最後に移動する必要があると思います。
Kotlin(Android 3.3、Kotlin 1.3.20)の解決策
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
supportActionBar!!.elevation = 0f
}