Android предоставляет элемент управления ViewPager , который представляет собой диспетчер компоновки, позволяющий реализовать навигацию с помощью жестов. Вы можете использовать ViewPager
для достижения функции карусели и отображения представлений через Fragment .
Для индикатора попробуйте использовать textView для достижения функции. Обнаружьте событие PageSelected из ViewPager
, чтобы изменить индикатор при прокрутке страниц.
Проверьте код:
Класс активности
public class Activity1 : AppCompatActivity
{
private TextView[] _dots { get; set; }
private LinearLayout _dotsLayout { get; set; }
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.layout2);
List<Android.Support.V4.App.Fragment> fragments = new List<Android.Support.V4.App.Fragment>();
fragments.Add(new MyFragment_1());
fragments.Add(new MyFragment_2());
fragments.Add(new MyFragment_3());
var adapter = new MyPagerAdapter(SupportFragmentManager, fragments);
ViewPager pager = (ViewPager)FindViewById(Resource.Id.pager);
pager.Adapter = adapter;
pager.PageSelected += Pager_PageSelected;
_dotsLayout = FindViewById<LinearLayout>(Resource.Id.indicator);
AddDotsIndicator(0);
}
private void Pager_PageSelected(object sender, ViewPager.PageSelectedEventArgs e)
{
AddDotsIndicator(e.Position);
}
private void AddDotsIndicator(int pos)
{
_dots = new TextView[3];
_dotsLayout.RemoveAllViews();
for (int i = 0; i < _dots.Length; i++)
{
_dots[i] = new TextView(this);
_dots[i].Text = ".";
_dots[i].TextSize = 35;
_dotsLayout.AddView(_dots[i]);
}
if (_dots.Length > 0)
_dots[pos].SetTextColor(Android.Graphics.Color.Red); //change indicator color on selected page
}
}
макет. xml
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:id="@+id/indicator"
android:layout_alignParentBottom="true"
android:gravity="center_horizontal"/>
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentTop="true"
android:layout_gravity="top"
android:textColor="#000"/>
Класс фрагмента и класс FragmentPagerAdapter:
public class MyPagerAdapter : FragmentPagerAdapter
{
List<Android.Support.V4.App.Fragment> fragments;
public MyPagerAdapter(Android.Support.V4.App.FragmentManager fm, List<Android.Support.V4.App.Fragment> fragments) : base(fm)
{
this.fragments = fragments;
}
public override int Count { get { return fragments.Count; } }
public override Android.Support.V4.App.Fragment GetItem(int position)
{
return fragments[position];
}
}
public class MyFragment_1 : Android.Support.V4.App.Fragment
{
public MyFragment_1()
{
}
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View view = inflater.Inflate(Resource.Layout.layout1, container, false);
TextView text = (TextView)view.FindViewById(Resource.Id.text);
text.Text = "view_1";
return view;
}
}
Учебное пособие: как добавить-точки-индикаторы-с-просмотром
Здесь - ссылка на образец проекта.