我想制作一个带有7个内容页面的标签页面(在xamarin表单中,不在本地项目中)。但红色的菜单栏(我不知道这个东西是什么,所以我称之为菜单栏)不是一个滚动菜单,所以每个内容页面的标题都没有很好地显示出来。就像这样:如何使用Xamarin表单中的滚动菜单制作多个内容页面的选项卡式页面?
,我其实有
有人知道做这样的事情?
件事,我希望它是
我想制作一个带有7个内容页面的标签页面(在xamarin表单中,不在本地项目中)。但红色的菜单栏(我不知道这个东西是什么,所以我称之为菜单栏)不是一个滚动菜单,所以每个内容页面的标题都没有很好地显示出来。就像这样:如何使用Xamarin表单中的滚动菜单制作多个内容页面的选项卡式页面?
,我其实有
有人知道做这样的事情?
件事,我希望它是
嘛不能多说! - 但我的假设是,你的问题是你的主题...
打开你的 'Tabbar.axml',改变这一行代码:
app:tabMode="fixed"
要:
app:tabMode="scrollable"
UPDATE:
那么简单,因为在默认情况下添加新行app:tabMode="scrollable"
是“固定”
不管怎么说,你要求的,这里是我Tabbar.axml:
<?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/colorPrimaryDark"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:tabIndicatorColor="@android:color/white"
app:tabGravity="fill"
app:tabMode="scrollable" />
您也可以通过创建一个CustomRednerer改变这一点。如果您想要在应用程序中创建多个选项卡式页面,并且希望使用可滚动选项卡制作其中的一个,然后使用不可滚动选项卡制作其中一个,则我的解决方案很好。
这里是Droid的项目代码:
using Android.Support.Design.Widget;
using App1;
using App1.Droid;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android.AppCompat;
[assembly: ExportRenderer(typeof(ScrollableTabbedPage), typeof(ScrollableTabbedPageRenderer))]
namespace App1.Droid
{
public class ScrollableTabbedPageRenderer : TabbedPageRenderer
{
public override void OnViewAdded(Android.Views.View child)
{
base.OnViewAdded(child);
var tabLayout = child as TabLayout;
if (tabLayout != null)
{
tabLayout.TabMode = TabLayout.ModeScrollable;
}
}
}
}
对于便携式项目:
using System;
using Xamarin.Forms;
namespace App1
{
public class ScrollableTabbedPage : TabbedPage
{
}
public class App : Application
{
public App()
{
var tabbedPage = new ScrollableTabbedPage();
for (int i = 0; i < 7; i++)
{
tabbedPage.Children.Add(this.GetMyContentPage(i));
}
MainPage = new NavigationPage(tabbedPage);
}
private ContentPage GetMyContentPage(int i)
{
return new ContentPage
{
Title = "Tab number " + i,
Content = new StackLayout
{
Children = {
this.GetMyButton()
}
}
};
}
private Button GetMyButton()
{
var myButton = new Button()
{
Text = "Welcome to Xamarin Forms!",
};
myButton.Command = new Command(() =>
{
myButton.Text = "Start" + DateTime.Now.ToString();
});
return myButton;
}
}
}
而对于结果你将会得到:
谢谢您的回答,但我不希望让机自定义渲染谟。如果我无法找到任何解决方案,我将使用您的解决方案 –
@帕维尔Kanarek您的代码为Droid项目完美工作。只需要修改构建错误即可进行更改。
更改行:
[assembly: ExportRenderer(typeof(ScrollableTabbedPage), typeof(ScrollableTabbedPageRenderer))]
到:
[assembly: ExportRenderer(typeof(TabbedPage), typeof(App1.Droid.ScrollableTabbedPageRenderer))]
感谢您的解决方案。它完美地帮助了我。
我找不到这一行,请问你能在xaml文件中显示你的代码吗? –
@Dunno你看看更新的答案!希望能帮助到你。 ...还要区分xaml和axml之间的区别,因为xaml在Xamarin Forms中用于创建UI,而axml是Android平台特定的设计语言! – MalokuS
啊,我忘了告诉你,我不希望让本地谟定制的渲染,我将修改我的问题,谢谢您的回答 –