ทางออกจาก Cody Toombs เกือบจะเป็นกลอุบายของฉัน ฉันไม่แน่ใจว่าXamarinเกี่ยวข้องหรือไม่ แต่ตอนนี้ฉันมีวิธีแก้ปัญหาที่ยอมรับได้:
นี่คือการตั้งค่าของฉัน:
ฉันมีโครงการ Android ที่ฉันได้อ้างอิงแพ็คเกจ Android.Support v4 และ v7 ฉันมีการกำหนดสองสไตล์:
ค่า / styles.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<resources>
<style name="MyStyle" parent="@style/Theme.AppCompat.Light.NoActionBar">
<item name="android:windowTranslucentStatus">true</item>
</style>
</resources>
ค่า-V21 / styles.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<resources>
<style name="MyStyle" parent="@style/Theme.AppCompat.Light.NoActionBar">
<item name="android:statusBarColor">@android:color/transparent</item>
</style>
</resources>
AndroidManifest กำหนดเป้าหมาย "MyStyle":
AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.agn.test.test">
<uses-sdk android:minSdkVersion="10" />
<application android:allowBackup="true" android:icon="@mipmap/icon" android:label="@string/app_name" android:theme="@style/MyStyle">
</application>
</manifest>
และสุดท้ายรหัสในกิจกรรมหลัก:
[Activity (Label = "Test", MainLauncher = true, Icon = "@mipmap/icon")]
public class MainActivity : Activity
{
protected override void OnCreate (Bundle savedInstanceState)
{
base.OnCreate (savedInstanceState);
SetContentView (Resource.Layout.Main);
//Resource.Layout.Main is just a regular layout, no additional flags. Make sure there is something in there like an imageView, so that you can see the overlay.
var uiOptions = (int)Window.DecorView.SystemUiVisibility;
uiOptions ^= (int)SystemUiFlags.LayoutStable;
uiOptions ^= (int)SystemUiFlags.LayoutFullscreen;
Window.DecorView.SystemUiVisibility = (StatusBarVisibility)uiOptions;
Window.AddFlags (WindowManagerFlags.DrawsSystemBarBackgrounds);
}
}
สังเกตว่าฉันตั้งค่าสถานะ DrawsSystemBarBackgrounds สิ่งนี้สร้างความแตกต่างทั้งหมด
Window.AddFlags (WindowManagerFlags.DrawsSystemBarBackgrounds);
ฉันใช้เวลามากมายในการทำให้ถูกต้องในความเป็นจริงเวลามากเกินไป หวังว่าคำตอบนี้จะช่วยให้ทุกคนพยายามบรรลุสิ่งเดียวกัน
android:fitsSystemWindows="true"