У меня есть карта внутри прокрутки, и когда мы пытаемся прокрутить карту, появляется вид прокрутки, который прокручивает сам, но не карту. Я пытаюсь решить эту проблему с помощью кода, который я нашел в Google, но Visual Studio показывает некоторые ошибки:
Error CS0246: The type or namespace name 'MapFragment' could not be found
(are you missing a using directive or an assembly reference?) (CS0246) (MasterDetailPageNavigation)
и
Error CS0115: 'TouchableMapFragment.OnCreateView(LayoutInflater, ViewGroup, Bundle)': no suitable method found to override (CS0115) (MasterDetailPageNavigation)
using System;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Util;
using Android.Views;
using Android.Widget;
//using Xamarin.Forms.Maps;
namespace MasterDetailPageNavigation
{
public class TouchableMapFragment : MapFragment
{
public event EventHandler TouchDown;
public event EventHandler TouchUp;
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
var root = base.OnCreateView(inflater, container, savedInstanceState);
var wrapper = new TouchableWrapper(Activity);
wrapper.SetBackgroundColor(Resources.GetColor(Android.Resource.Color.Transparent));
((ViewGroup)root).AddView(wrapper,
new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MatchParent, ViewGroup.LayoutParams.MatchParent));
wrapper.TouchUp = () =>
{
if (TouchUp != null)
TouchUp(this, EventArgs.Empty);
};
wrapper.TouchDown = () =>
{
if (TouchDown != null)
TouchDown(this, EventArgs.Empty);
};
return root;
}
class TouchableWrapper : FrameLayout
{
public Action TouchDown;
public Action TouchUp;
#region ctors
protected TouchableWrapper(IntPtr javaReference, JniHandleOwnership transfer)
: base(javaReference, transfer) { }
public TouchableWrapper(Context context)
: this(context, null) { }
public TouchableWrapper(Context context, IAttributeSet attrs)
: this(context, attrs, 0) { }
public TouchableWrapper(Context context, IAttributeSet attrs, int defStyle)
: base(context, attrs, defStyle) { }
#endregion
public override bool DispatchTouchEvent(MotionEvent e)
{
switch (e.Action)
{
case MotionEventActions.Down:
if (TouchDown != null)
TouchDown();
break;
case MotionEventActions.Cancel:
case MotionEventActions.Up:
if (TouchUp != null)
TouchUp();
break;
}
return base.DispatchTouchEvent(e);
}
}
}
}
Также этот код имеет файл .A XML, который я включу ниже, но я никогда раньше не использовал что-то подобное, я работаю с XAML из Xamarin, где я должен поместить этот xml?
xaml Я говорил о:
<?xml version="1.0" encoding="utf-8"?>
<HorizontalScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/scroll">
<LinearLayout
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="match_parent">
<fragment
android:id="@+id/map"
android:layout_width="600dp"
android:layout_height="match_parent"
android:name="my.awesome.namespace.TouchableMapFragment" />
</LinearLayout>
</HorizontalScrollView>
Извините, если это глупый вопрос, но я учусь в одиночестве, и это немного сложно.