Xamarin C # - создание смахиваемой линейной раскладки - PullRequest
0 голосов
/ 26 декабря 2018

Я создал LinearLayout 1, но мне также нужно показать LinearLayout 2. Проблема заключалась в том, что он занимал бы много места на экране, поэтому я подумал, что могу сделать его смахивающим.

Теперь мне нужно создать пролистываемое представление, но я не могу найти ничего о пролистывании между LinearLayouts.Так что для ясности, мне нужно какое-то слайд-шоу для LinearLayouts ... Кто-то знает, как я могу создать что-то подобное, или может дать мне пример?

1 Ответ

0 голосов
/ 26 декабря 2018

Вы можете достичь этого с помощью ViewPager .ViewPager - это менеджер макетов, который позволяет вам реализовать жестовую навигацию.Жесткая навигация позволяет пользователю проводить пальцем влево и вправо для перехода по страницам данных.

Это рендеринг.

enter image description here

Пожалуйста, обратитесь к следующему коду.

activity_main.axml

<?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"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v4.view.ViewPager
    android:layout_width="match_parent"
android:layout_height="match_parent"
    android:id="@+id/viewpager_page"
/>

view_one.axml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="first Page"
    android:textColor="#000000"
    android:textSize="18sp"
    android:textStyle="bold"
/>

view_Two.axml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="second Page"
    android:textColor="#000000"
    android:textSize="18sp"
    android:textStyle="bold"
/>

MainActivity.cs

namespace ViewPager
{
[Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher = true)]
public class MainActivity : AppCompatActivity
{
    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        // Set our view from the "main" layout resource
        SetContentView(Resource.Layout.activity_main);
        Android.Support.V4.View.ViewPager viewpager_page = FindViewById<Android.Support.V4.View.ViewPager>(Resource.Id.viewpager_page);
        List<View> viewlist =new List<View>();
        //LayoutInflater.Inflate;
        viewlist.Add(LayoutInflater.Inflate(Resource.Layout.view_one,null,false));
        viewlist.Add(LayoutInflater.Inflate(Resource.Layout.view_Two, null, false));
        MyPagerAdapter mAdapter = new MyPagerAdapter(viewlist);
        viewpager_page.Adapter = mAdapter;
    }
}
}

MyPagerAdapter .cs

class MyPagerAdapter : PagerAdapter
{
    List<View> viewlist;
    public MyPagerAdapter(List<View> viewlist)
    {

        this.viewlist = viewlist;
    }
    public override int Count => 2;

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

    public override Java.Lang.Object InstantiateItem(ViewGroup container, int position)
    {
        container.AddView(viewlist[position]);
        return viewlist[position];
    }
    public override void DestroyItem(ViewGroup container, int position, Java.Lang.Object @object)
    {
        container.RemoveView(viewlist[position]);
    }
}
...