Reputation: 18799
I am building a Xamarin Android
app using Xamarin.Forms
my App
class is really simple and contains one page like so:
public App()
{
// The root page of your application
MainPage = new NavigationPage(new ContentPage()
{
Title = "My First Page!",
Content = new Label()
{
Text = "Test Page!",
TextColor = Color.White,
FontSize = 25,
HorizontalOptions = LayoutOptions.Center,
VerticalOptions = LayoutOptions.Center
}
});
}
and my MainActivity
class like so:
[Activity(Label = "GridTest", Icon = "@drawable/icon", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsApplicationActivity
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
global::Xamarin.Forms.Forms.Init(this, bundle);
LoadApplication(new App());
}
}
When I launch the application though the NavigationBar
is displayed with the word "GridTest" displayed in the top left which looks rubbish, shown below:
This is the NavigationBar I would like to hide.
After this my application loads with the navigation bar fine. Shown below:
I would like to keep this Navigation Bar
So my question is. How do I hide the Android NavigationBar
that is displayed BEFORE the initial page has loaded?
SIDE NOTE:
I have tried NavigationPage.SetHasNavigationBar(page,false);
but this does not work. This hides the NavigationBar
for the first page shown below.
which I would like to keep! This also does not hide the "GridTest" navigation bar I am looking to hide (shown in screenshot 1)
To reiterate... I am looking to hide the INITIAL navigation bar. provided by the Android MainActivity
NOT the Xamarin.Forms
navigation bar
Upvotes: 0
Views: 4787
Reputation: 2761
The main activity which will load the first time the application starts.
[Activity(Label = "testapp", MainLauncher = true, Theme = "@style/MyTheme", ScreenOrientation = ScreenOrientation.Portrait)]
public class SplashActivity : Activity
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
// SetContentView(Resource.Layout.LaunchScreen); //Set a splash screen here if you wish
Java.Lang.Runnable runnable = new Java.Lang.Runnable(() =>
{
Intent i = new Intent(this, typeof(MainActivity));
StartActivity(i);
});
new Handler().PostDelayed(runnable, 1000);
}
}
The theme for that activity must be saved to Resources/drawable/styles.xml
and is
<resources>
<style name="MyTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowNoTitle">true</item>
</style>
</resources>
This SplashActivity
will load and call MainActivity
and your MainActivity
will look like this:
[Activity(Label = "GridTest", Icon = "@drawable/icon", ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsApplicationActivity
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
global::Xamarin.Forms.Forms.Init(this, bundle);
LoadApplication(new App());
}
}
You dont need to set the Theme here and it will work as before. Another Important note about the MainActivity
is you MUST remove MainLauncher = true
Upvotes: 2
Reputation: 99
You should be able to hide that navigation bar by setting a simple attribute in your page like so:
<ContentPage NavigationPage.HasNavigationBar="false"
..... >
</ContentPage>
Upvotes: 0