【发布时间】:2018-12-01 06:13:07
【问题描述】:
我有一个带有 Ionic 3 的应用程序,并且在您的 app.component.ts 中,我使用 Statusbar ionic 插件来隐藏它,但是,这仅在触发平台就绪后才会发生。
如何在启动画面中隐藏它?我试过了:
– 在启动画面期间不隐藏,仅在此隐藏之后 - 在启动画面期间不改变背景颜色
解决方案?
【问题讨论】:
标签: ionic-framework ionic2 ionic3 ionic-native
我有一个带有 Ionic 3 的应用程序,并且在您的 app.component.ts 中,我使用 Statusbar ionic 插件来隐藏它,但是,这仅在触发平台就绪后才会发生。
如何在启动画面中隐藏它?我试过了:
– 在启动画面期间不隐藏,仅在此隐藏之后 - 在启动画面期间不改变背景颜色
解决方案?
【问题讨论】:
标签: ionic-framework ionic2 ionic3 ionic-native
我在使用基于 Cordova 的应用程序时遇到了同样的问题。在找到此解决方案之前,我无法弄清楚如何在 Splashcreen 期间隐藏状态栏(尝试了很多事情)。
找到文件platforms/android/app/src/main/res/values/strings.xml
通过编辑 XML 添加具有特定规则的自定义主题
<?xml version='1.0' encoding='utf-8'?>
<resources>
<string name="app_name">My App Name</string>
<string name="launcher_name">@string/app_name</string>
<string name="activity_name">@string/launcher_name</string>
<!-- Add your custom theme rules -->
<style name="MyCustomTheme" parent="@style/Theme.AppCompat.NoActionBar">
<item name="android:windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
</style>
</resources>
找到文件platforms/android/app/src/main/AndroidManifest.xml
找到<activity>标签并添加对"MyCustomTheme"的引用
<activity android:theme="@style/MyCustomTheme" ...etc...
您可能更喜欢直接从您的config.xml 文件管理此自定义主题,而无需自己编辑AndroidManifest.xml 和strings.xml。如果cordova platform remove android 和cordova platform add android 会删除您的更改,这会很有帮助。
在你的 config.xml 中添加这个
<platform name="android">
<!-- Edit the activity tag fo your AndroidManifest.xml -->
<edit-config file="AndroidManifest.xml" mode="merge" target="/manifest/application/activity">
<activity android:theme="@style/MyCustomTheme"/>
</edit-config>
<!-- Edit the strings.xml file -->
<edit-config file="strings.xml" mode="add" target="/resources">
<style name="MyCustomTheme" parent="@style/Theme.AppCompat.NoActionBar">
<item name="android:windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
</style>
</edit-config>
</platform>
最后一步,请记住,为了能够使用 config.xml 文件中的 <edit-config> 标签,您需要将此 xmlns 属性添加到 <widget> 标签中。
<?xml version='1.0' encoding='utf-8'?>
<widget xmlns:android="http://schemas.android.com/apk/res/android" ...etc...
如果您有更好的选择,我很想知道!
【讨论】:
在 MainActivity 页面中添加代码后 我运行命令来构建 apk 我收到了这个错误
任务 :app:compileDebugJavaWithJavac 失败
E:\Ionic\AIOU_Solutions1\platforms\android\app\src\main\java\io\ionic\starter\MainActivity.java:38:错误:WindowManager 包不存在
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
【讨论】:
安卓
似乎没有优雅的方式在应用启动时隐藏状态栏。 但有一种方法可以做到这一点。
platforms/android/src/io/ionic/starter)import android.view.WindowManager;
public class MainActivity extends CordovaActivity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// enable Cordova apps to be started in the background
Bundle extras = getIntent().getExtras();
if (extras != null && extras.getBoolean("cdvStartInBackground", false)) {
moveTaskToBack(true);
}
// [Hyuck] add this two line below
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
// Set by <content src="index.html" /> in config.xml
loadUrl(launchUrl);
}
// [Hyuck] onStart() is totally new.
@Override
public void onStart()
{
super.onStart();
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
}
}
IOS
我只能测试 Android 设备。所以,我就留下the link,这可能会解决你的问题
【讨论】: