在 Xamarin Android 中显示顶部有 3 个点的 ViewPager,可以通过自定义布局和适配器来实现。
首先,需要创建一个布局文件来定义 ViewPager 的外观。可以使用 LinearLayout 或者 RelativeLayout 来放置 ViewPager 和指示器。以下是一个示例布局文件的代码:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<androidx.viewpager.widget.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
<LinearLayout
android:id="@+id/indicatorLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal">
<View
android:id="@+id/indicator1"
android:layout_width="10dp"
android:layout_height="10dp"
android:layout_margin="5dp"
android:background="@drawable/indicator_selected" />
<View
android:id="@+id/indicator2"
android:layout_width="10dp"
android:layout_height="10dp"
android:layout_margin="5dp"
android:background="@drawable/indicator_unselected" />
<View
android:id="@+id/indicator3"
android:layout_width="10dp"
android:layout_height="10dp"
android:layout_margin="5dp"
android:background="@drawable/indicator_unselected" />
</LinearLayout>
</LinearLayout>
接下来,需要创建适配器来管理 ViewPager 的内容。适配器可以继承自 FragmentPagerAdapter 或者 FragmentStatePagerAdapter,根据具体需求选择合适的适配器。以下是一个示例适配器的代码:
public class MyPagerAdapter : FragmentPagerAdapter
{
private List<Fragment> fragments;
public MyPagerAdapter(FragmentManager fm, List<Fragment> fragments) : base(fm)
{
this.fragments = fragments;
}
public override int Count => fragments.Count;
public override Fragment GetItem(int position)
{
return fragments[position];
}
}
然后,在 Activity 或者 Fragment 中,可以通过以下代码来设置 ViewPager 和指示器:
ViewPager viewPager = FindViewById<ViewPager>(Resource.Id.viewPager);
LinearLayout indicatorLayout = FindViewById<LinearLayout>(Resource.Id.indicatorLayout);
List<Fragment> fragments = new List<Fragment>();
fragments.Add(new Fragment1());
fragments.Add(new Fragment2());
fragments.Add(new Fragment3());
MyPagerAdapter adapter = new MyPagerAdapter(SupportFragmentManager, fragments);
viewPager.Adapter = adapter;
viewPager.PageSelected += (sender, e) =>
{
for (int i = 0; i < indicatorLayout.ChildCount; i++)
{
View indicator = indicatorLayout.GetChildAt(i);
indicator.Background = (i == e.Position) ? Resources.GetDrawable(Resource.Drawable.indicator_selected) : Resources.GetDrawable(Resource.Drawable.indicator_unselected);
}
};
以上代码中,Fragment1、Fragment2 和 Fragment3 是自定义的 Fragment 类,用于显示 ViewPager 的内容。可以根据实际需求创建并设置这些 Fragment。
最后,需要创建指示器的背景资源文件。在 res/drawable 文件夹下创建 indicator_selected.xml 和 indicator_unselected.xml 文件,分别用于表示选中和未选中状态的指示器。以下是示例资源文件的代码:
indicator_selected.xml:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="#FF0000" />
</shape>
indicator_unselected.xml:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="#CCCCCC" />
</shape>
通过以上步骤,就可以在 Xamarin Android 中显示顶部有 3 个点的 ViewPager,并且实现了指示器的切换效果。
推荐的腾讯云相关产品和产品介绍链接地址:
云+社区技术沙龙[第7期]
云+社区技术沙龙[第16期]
云+社区技术沙龙 [第30期]
T-Day
企业创新在线学堂
云+社区技术沙龙[第22期]
云+社区技术沙龙[第14期]
“中小企业”在线学堂
第三期Techo TVP开发者峰会
领取专属 10元无门槛券
手把手带您无忧上云