Xamarin.android Android导航标签条
我想在我的应用程序中实现NavigationTabStrip(),但我不知道如何实现。我也看过原始项目,但我是新来的。有没有人能帮我实施这个项目?还是有人知道怎么做?我正在尝试在材质设计中创建一个表格布局。试试这个库,它更清晰Xamarin.android Android导航标签条,xamarin.android,android-tablayout,Xamarin.android,Android Tablayout,我想在我的应用程序中实现NavigationTabStrip(),但我不知道如何实现。我也看过原始项目,但我是新来的。有没有人能帮我实施这个项目?还是有人知道怎么做?我正在尝试在材质设计中创建一个表格布局。试试这个库,它更清晰 最简单的方法是: 代码在xamarin中,因此它对您来说是一个简单的实现 祝你好运 更新: 活动Axml文件的代码: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android
最简单的方法是: 代码在xamarin中,因此它对您来说是一个简单的实现 祝你好运 更新: 活动Axml文件的代码:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?actionBarSize"
android:minHeight="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:theme="@style/MyTheme"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabGravity="fill"
app:tabMode="fixed"
/>
<FrameLayout
android:id="@+id/frame_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
活动cs文件的代码:
public class GoogleMapsActivity : AppCompatActivity
{
private Fragment MapsFragment;
private Fragment ListFragment;
private TabLayout allTabs;
FragmentManager fm;
FragmentTransaction ft;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.your_activity);
bindAllWidgets();
setupTabLayout();
setUpToolbar();
}
void setUpToolbar()
{
#region "Tool bar"
var toolbar = FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);
toolbar.SetTitleTextColor(ResourcesCompat.GetColor(Resources, Resource.Color.colorRedText, null));
Drawable upArrow = ResourcesCompat.GetDrawable(Resources, Resource.Drawable.abc_ic_ab_back_mtrl_am_alpha, null);
upArrow.SetColorFilter(Color.ParseColor(Resources.GetString(Resource.Color.colorRedText)), PorterDuff.Mode.SrcAtop);
SetSupportActionBar(toolbar);
SupportActionBar.Title = Resources.GetString(Resource.String.toolbar_title_dhl_service_points);
SupportActionBar.SetHomeButtonEnabled(true);
SupportActionBar.SetDisplayHomeAsUpEnabled(true);
SupportActionBar.SetHomeAsUpIndicator(upArrow);
#endregion
}
private void setupTabLayout()
{
allTabs.AddTab(allTabs.NewTab().SetText(Resources.GetString(Resource.String.google_maps_page_title_map)), true);
allTabs.AddTab(allTabs.NewTab().SetText(Resources.GetString(Resource.String.google_maps_page_title_list)));
}
private void bindAllWidgets()
{
allTabs = FindViewById<TabLayout>(Resource.Id.tabs);
allTabs.TabSelected += AllTabs_TabSelected;
}
private void AllTabs_TabSelected(object sender, TabSelectedEventArgs e)
{
var tab = e.Tab;
setCurrentTabFragment(tab.Position);
}
public void replaceFragment(Fragment fragment)
{
fm = FragmentManager;
ft = fm.BeginTransaction();
if (fragment == MapsFragment)
{
if (MapsFragment == null)
{
MapsFragment = new PoSLocationMapView(this);
ft.Add(Resource.Id.frame_container, MapsFragment, "MapsFragment");
}
else
{
ft.Detach(FragmentManager.FindFragmentByTag("ListFragment"));
ft.Attach(MapsFragment);
}
}
else if (fragment == ListFragment)
{
if (ListFragment == null)
{
ListFragment = new ServicePointDHLList(this);
ft.Add(Resource.Id.frame_container, ListFragment, "ListFragment");
}
else
{
ft.Detach(FragmentManager.FindFragmentByTag("MapsFragment"));
ft.Attach(ListFragment);
}
}
ft.SetTransition(FragmentTransit.FragmentOpen);
ft.Commit();
}
private void setCurrentTabFragment(int tabPosition)
{
switch (tabPosition)
{
case 0:
replaceFragment(MapsFragment);
break;
case 1:
replaceFragment(ListFragment);
break;
}
}
}
公共类GoogleMapsActivity:AppCompatActivity
{
私有片段映射片段;
私有片段列表片段;
所有标签的专用表格布局;
碎片管理器fm;
碎片交易;
创建时受保护的覆盖无效(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.your_活动);
bindAllWidgets();
setupTabLayout();
设置工具栏();
}
void setUpToolbar()
{
#区域“工具栏”
var-toolbar=findviewbyd(Resource.Id.toolbar);
SetTitleTextColor(ResourcesCompat.GetColor(Resources,Resource.Color.colorRedText,null));
Drawable upArrow=ResourcesCompat.GetDrawable(Resources,Resource.Drawable.abc_ic_ab_back_mtrl_am_alpha,null);
SetColorFilter(Color.ParseColor(Resources.GetString(Resource.Color.colorRedText)),PorterDuff.Mode.SrcAtop);
设置支持操作栏(工具栏);
SupportActionBar.Title=Resources.GetString(Resource.String.toolbar\u Title\u dhl\u service\u points);
SupportActionBar.SetHomeButtonEnabled(真);
SupportActionBar.SetDisplayHomeAsUpEnabled(true);
SupportActionBar.SetHomeAsUpIndicator(向上箭头);
#端区
}
私有void setupTabLayout()
{
allTabs.AddTab(allTabs.NewTab().SetText(Resources.GetString(Resource.String.google\u maps\u page\u title\u map)),true);
allTabs.AddTab(allTabs.NewTab().SetText(Resources.GetString(Resource.String.google\u maps\u page\u title\u list));
}
私有void bindAllWidgets()
{
allTabs=findviewbyd(Resource.Id.tabs);
allTabs.TabSelected+=所有选项卡\tabu选中;
}
私有void AllTabs\u tab选中(对象发送者,TabSelectedEventArgs e)
{
var-tab=e.tab;
setCurrentTabFragment(制表位);
}
公共无效替换片段(片段片段)
{
fm=碎片管理器;
ft=fm.BeginTransaction();
if(fragment==MapsFragment)
{
if(MapsFragment==null)
{
MapsFragment=新的PoSLocationMapView(此);
ft.Add(Resource.Id.frame_容器,MapsFragment,“MapsFragment”);
}
其他的
{
ft.Detach(FragmentManager.FindFragmentByTag(“ListFragment”);
ft.Attach(地图碎片);
}
}
else if(fragment==ListFragment)
{
如果(ListFragment==null)
{
ListFragment=新的ServicePointDhlist(此);
ft.Add(Resource.Id.frame_容器,ListFragment,“ListFragment”);
}
其他的
{
ft.Detach(FragmentManager.FindFragmentByTag(“MapsFragment”);
ft.Attach(列表片段);
}
}
ft.SetTransition(fragmenttransition.FragmentOpen);
ft.Commit();
}
私有void setCurrentTabFragment(int-tabPosition)
{
开关(选项卡位置)
{
案例0:
替换片段(MapsFragment);
打破
案例1:
替换片段(ListFragment);
打破
}
}
}
谢谢,但我没有使用Xamarin.Forms..我可以使用第一个吗?除了材料设计之外,有没有其他方法可以使用第一个?附:谢谢默认情况下,这实际上会占用你的主题,你不必担心,但是在fragment_sample.axml文件中,我在SlidengTablayoutTutorial.SlidengTabscrollView中出错,它不存在..我要发疯了..你在使用哪个链接,先生?还有..可能我错了,但它不占用主题,我在清单中设置了一个材质主题,但它不起作用:\