このトピックについていくつかの調査を行いましたが、自分のアプリ/アクティビティの解決策を見つけることができませんでした。
最初に、AndroidManifest.xmlのテーマを変更しようとしました:
values/styles.xml:
<style name="AppTheme.ActionBar.Transparent" parent="AppTheme">
<item name="Android:windowContentOverlay">@null</item>
<item name="windowActionBarOverlay">true</item>
<item name="colorPrimary">@Android:color/transparent</item>
そして
values-v21/styles.xml:
<style name="AppTheme.ActionBar.Transparent" parent="AppTheme">
<item name="colorPrimary">@Android:color/transparent</item>
</style>
しかし、それが結果です:
そのため、ライトグレーのアクションバーだけがあり、左側と右側にギャップがあります。
次に、レイアウトでfitsSystemWindow="true"
およびAndroid:background="@Android:color/transparent"
を使用してみましたが、問題が解決しませんでした。
<?xml version="1.0" encoding="utf-8"?>
<Android.support.design.widget.CoordinatorLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:fitsSystemWindows="true"
tools:context="com.example.poweranimal.letsgo.Application.MainActivity">
<Android.support.design.widget.AppBarLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:background="@Android:color/transparent">
<Android.support.v7.widget.Toolbar
Android:id="@+id/toolbar"
Android:layout_width="match_parent"
Android:layout_height="?attr/actionBarSize"/>
</Android.support.design.widget.AppBarLayout>
<include layout="@layout/content_main" />
</Android.support.design.widget.CoordinatorLayout>
しかし、私は以前と同じ出力を取得します:( 2.さらに、私は透明なステータスバーを取得しようとしました:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
そして
<item name="Android:statusBarColor">@Android:color/transparent</item>
しかし、これもうまくいきませんでした(何も変わっていません)。
私が実際に欲しいのは次のようなものです:
誰かが私に可能な解決策を持っているなら、かっこいいでしょう。
前もって感謝します。
1。最初に、layout
構造体を変更して、透明なMAP
&Toolbar
の下にStatusBar
を表示し、既存のgap
から左右のToolbar
を削除する必要があります。
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<Android.support.design.widget.CoordinatorLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:fitsSystemWindows="false">
<RelativeLayout
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<Android.support.v7.widget.Toolbar
Android:id="@+id/toolbar"
Android:layout_width="match_parent"
Android:layout_height="?attr/actionBarSize"
Android:layout_marginTop="24dp"
Android:elevation="1dp" />
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:background="@drawable/sample_map">
<!-- put your content here -->
</LinearLayout>
</RelativeLayout>
</Android.support.design.widget.CoordinatorLayout>
2。MainActivity
で、Toolbar
を初期化し、Toolbar
とStatusBar
をtransparent
として作成するために、以下のことを行います。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
// Toolbar :: Transparent
toolbar.setBackgroundColor(Color.TRANSPARENT);
setSupportActionBar(toolbar);
getSupportActionBar().setTitle("StackOverflow");
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
// Status bar :: Transparent
Window window = this.getWindow();
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.Lollipop)
{
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.setStatusBarColor(Color.TRANSPARENT);
}
...........
..................
}
3。以下のテーマをMainActivity
に適用します。
values/styles.xml:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
.......
...........
</style>
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
AndroidManifest.xml:
<activity
Android:name=".EmptyActivity"
Android:theme="@style/AppTheme.NoActionBar">
</activity>
出力:
[〜#〜] fyi [〜#〜]、コンテンツのマップのサンプル画像LinearLayout
を使用して動作を示しました。あなたのケースでは、すべてのコンテンツを入れてください(searchbar, map
) その中。
これがお役に立てば幸いです〜
これを試して。
次のコードをアクティビティに追加して、ステータスバーを透明に設定します。アクションバーの場合は、背景が透明なカスタムアクションバーを試す必要があります。
private void settingStatusBarTransparent() {
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.KitKat) {
Window w = getWindow(); // in Activity's onCreate() for instance
w.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION, WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Lollipop) {
getWindow().setNavigationBarColor(Color.BLACK);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
getWindow().setStatusBarColor(Color.TRANSPARENT);
//setStatusBarTranslucent(true);
}
}
まず私の視点として、カスタムアクションバーを作成し、アクションバーの背景を透明に設定します。
<?xml version="1.0" encoding="utf-8"?>
<Android.support.v7.widget.Toolbar xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:layout_width="match_parent"
Android:layout_height="60dp"
Android:background="@Android:color/transparent"
Android:id="@+id/toolBar"
Android:minHeight="?attr/actionBarSize"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<ImageButton
Android:background="@Android:color/transparent"
Android:id="@+id/btnBackButton"
Android:layout_width="40dp"
Android:layout_height="45dp"
Android:src="@drawable/back" />
<ImageView
Android:layout_width="wrap_content"
Android:layout_height="39dp"
Android:layout_gravity="center_vertical|center_horizontal"
Android:id="@+id/toolbar_image"
Android:background="@Android:color/transparent"
Android:src="@drawable/logo_header_new"
Android:visibility="visible"
/>
</Android.support.v7.widget.Toolbar>
これを試して:
まず、以下のようにcolors.xml
にカスタムカラーを追加します。
<color name="transparent_white">#80FFFFFF</color>
次に、この色をWhere to?
xmlファイルのメインレイアウトの背景として設定します。
この行の#80
は、色の不透明度(つまり、透明の反対)です。
色の前の最初の2文字:
以下でXMLを変更して試してください
<Android.support.design.widget.AppBarLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:background="@color/transparent_white">
これで問題が解決することを願っています。
これを試してください:アクティビティで:全画面フラグを設定
@TargetApi(Build.VERSION_CODES.Lollipop)
@Override
protected void onCreate(Bundle savedInstanceState) {
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
if (Android.os.Build.VERSION.SDK_INT >= 21)
getWindow().setStatusBarColor(Color.TRANSPARENT);
super.onCreate(savedInstanceState);
}
マニフェストになりました:テーマを適用してください
<activity
Android:name=".YourActivity"
Android:label="@string/app_name"
Android:screenOrientation="portrait"
Android:theme="@style/AppTheme.ActionBar.Transparent"/>
res/styles.xml
<style name="AppTheme.ActionBar.Transparent" parent="AppTheme">
<item name="colorPrimary">@Android:color/transparent</item>
<item name="windowActionBarOverlay">false</item>
<item name="Android:windowContentOverlay">@null</item>
<item name="Android:windowActionBarOverlay">false</item>
</style>
そしてAndroid:fitsSystemWindows="false"
あなたのCoordinatorLayout
fitsSystemWindows="false"
:設定したウィンドウフラグにより、ステータスバーの下に通常どおりビューを描画します。
fitsSystemWindows="true"
:設定したウィンドウフラグにより、ステータスバーの下にビューを描画しますが、上部を追加します
コンテンツがステータスバーの下に描画され、重複しないようにパディングします。