Ответ 1
Это известная ошибка в Xamarin: android:visibility="gone"
в Tabbar.axml не освобождает пространство (Status: ПОДТВЕРЖДЕНО).
Как только это исправлено, использование вышеприведенного подхода, похоже, является способом выхода.
В Xamarin Forms мне нужно написать пользовательский TabbedPageRenderer
, чтобы скрыть панель Android. Однако я не знаю, как это сделать.
[assembly: ExportRenderer(typeof(CTabbedPage), typeof(CTabbedPageRenderer))]
namespace App15.Droid
{
public class CTabbedPageRenderer : TabbedPageRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<TabbedPage> e)
{
base.OnElementChanged(e);
if (e.NewElement != null)
{
(this.Context as Activity).ActionBar.NavigationMode = ActionBarNavigationMode.Standard;
}
}
}
}
Этот код генерирует исключение, поскольку ActionBar
имеет значение null. Я использую AppCompat 23.3.0 и XF 2.3.2.118-pre1.
EDIT: Я думаю, что причина ActionBar
равна null, а Toolbar
заменила его, но я до сих пор не знаю, как скрыть вкладки. Кроме того, меня не интересует толкание страниц по-разному.
Я также попытался добавить android:visibility="gone"
в Tabbar.axml
. Это успешно скрывает вкладку, но вкладка по-прежнему занимает пространство.
Это известная ошибка в Xamarin: android:visibility="gone"
в Tabbar.axml не освобождает пространство (Status: ПОДТВЕРЖДЕНО).
Как только это исправлено, использование вышеприведенного подхода, похоже, является способом выхода.
Вот идеальное решение:
например:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.TabLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/sliding_tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:tabIndicatorColor="@android:color/white"
app:tabGravity="fill"
app:tabMode="fixed"
android:visibility="gone" />
Строка комментария строки комментариевResource = Resource.Layout.Toolbar;
например:
namespace BottomTab.Droid
{
[Activity(Label = "BottomTab.Droid", Icon = "@drawable/icon", Theme = "@style/MyTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
protected override void OnCreate(Bundle bundle)
{
TabLayoutResource = Resource.Layout.Tabbar;
//ToolbarResource = Resource.Layout.Toolbar;
base.OnCreate(bundle);
global::Xamarin.Forms.Forms.Init(this, bundle);
LoadApplication(new App());
}
}
}
например:
public partial class MyPage : ContentPage
{
public MyPage()
{
InitializeComponent();
NavigationPage.SetHasNavigationBar(this, false);
}
private void OnGoToProfile(object sender, EventArgs e)
{
Navigation.PushAsync(new ProfilePage());
}
}