【问题标题】:How to add page in sliding tab layout in Xamarin Android如何在 Xamarin Android 的滑动选项卡布局中添加页面
【发布时间】:2017-08-02 18:39:13
【问题描述】:

我需要在滑动选项卡页面布局 Xamarin Android 的每个选项卡中添加一些页面,我已经使滑动选项卡布局可以工作,但我无法更改每个选项卡的页面这是我的代码片段代码:

public class SlidingTabsFragment : Fragment
    {
        private SlidingTabScrollView mSlidingTabScrollView;
        private ViewPager mViewPager;

        public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {
            return inflater.Inflate(Resource.Layout.fragment_sample, container, false);
        }

        public override void OnViewCreated(View view, Bundle savedInstanceState)
        {
            mSlidingTabScrollView = view.FindViewById<SlidingTabScrollView>(Resource.Id.sliding_tabs);
            mViewPager = view.FindViewById<ViewPager>(Resource.Id.viewpager);
            mViewPager.Adapter = new SamplePagerAdapter();

            mSlidingTabScrollView.ViewPager = mViewPager;
        }

        public class SamplePagerAdapter : PagerAdapter
        {
            List<string> items = new List<string>();

            public SamplePagerAdapter() : base()
            {
                items.Add("Nasional");
                items.Add("Olahraga");
                items.Add("Internasional");
                items.Add("Hiburan");
                items.Add("Sains");
                items.Add("Ekonomi");
            }

            public override int Count
            {
                get { return items.Count; }
            }

            public override bool IsViewFromObject(View view, Java.Lang.Object obj)
            {
                return view == obj;
            }

            public override Java.Lang.Object InstantiateItem(ViewGroup container, int position)
            {
                View view = LayoutInflater.From(container.Context).Inflate(Resource.Layout.pager_item, container, false);
                container.AddView(view);

                TextView txtTitle = view.FindViewById<TextView>(Resource.Id.item_title);
                int pos = position + 1;
                txtTitle.Text = pos.ToString();

                return view;
            }

            public string GetHeaderTitle(int position)
            {
                return items[position];
            }

            public override void DestroyItem(ViewGroup container, int position, Java.Lang.Object obj)
            {
                container.RemoveView((View)obj);
            }
        }
    }

我想要在这里让每个标签都重定向到我制作的另一个页面,这是我的页面示例

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:minHeight="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:titleTextColor="#333639" />
    <android.support.v7.widget.RecyclerView
        android:padding="8dp"
        android:id="@+id/recyclerView"
        android:layout_below="@id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</RelativeLayout>

【问题讨论】:

    标签: c# android visual-studio xamarin xamarin.android


    【解决方案1】:

    在您的布局中包含 PagerSlidingTabStrip 小部件。这通常应该放在它所代表的 ViewPager 之上。

    <com.refractored.PagerSlidingTabStrip android:id="@+id/tabs" 
    android:layout_width="match_parent" android:layout_height="?
    attr/actionBarSize" android:background="?attr/colorPrimary" />
    

    在您的 OnCreate 方法(或片段的 OnCreateView)中,将小部件绑定到 ViewPager。

    // Initialize the ViewPager and set an adapter
    var pager =  FindViewById<ViewPager>(Resource.Id.pager);
    pager.Adapter = new TestAdapter(SupportFragmentManager);
    
    // Bind the tabs to the ViewPager
    var tabs = FindViewById<PagerSlidingTabStrip>(Resource.Id.tabs);
    tabs.SetViewPager(pager);
    

    如果您的适配器实现了 CustomTabProvider 接口,您可以通过自定义选项卡视图/s。如果返回的视图包含 id Resource.Id.psts_tab_title,则此视图应该是 TextView 并将用于放置标题。如果您不希望库管理选项卡的 TextView 标题,请在选项卡布局中使用与 Resource.Id.psts_tab_title 不同的 ID。

    如果您的适配器不影响 CustomTabProvider 接口,则将使用默认选项卡(即 ID 为 Resource.Id.psts_tab_title 的 TextView)。

    (可选)如果您在视图寻呼机中使用实现 IOnPageChangeListener,您应该在小部件中设置它,而不是直接在寻呼机上。

    //从上面继续

    tabs.SetOnPageChangeListener(pageChangeListener);
    

    示例代码,请参考此链接:

    https://github.com/jamesmontemagno/PagerSlidingTabStrip-for-Xamarin.Android

    示例 http://cforbeginners.com/XamarinProjects.html

    Youtube 视频 https://www.youtube.com/watch?v=0Rr0ZCvX_Zs

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多