我有一个非常简单的Xamarin表单应用程序,其中包含一个scrollview,而inside是一个stacklayout。
在Windows上部署时,鼠标可以正常使用滚动条滚动滚动视图。但是,触摸/拖动根本不起作用以滚动相同的控件。我是否必须做一些特殊的事情才能启用触摸/拖动滚动?我认为这样可行。
我甚至不确定从何处开始进行故障排除。
我的目标是Windows 10.其他平台此时可选。
我所拥有的UI类的结构是:
ContentPage.Content = StackLayout1
StackLayout1.Children = { StackLayout2, Scrollview }
StackLayout2 contains an entry field and two buttons
ScrollView, which is the problem, contains another StackLayout
Inside that I have some labels and some grids
以下是简化的复制品。在我的(触控式)开发机器上运行Android模拟器,在触摸工作中滚动,在Windows 8.1模拟器中运行,滚动仅适用于鼠标,而不是触摸。
public App() {
StackLayout sl = new StackLayout();
for (int i = 1; i < 20; i++) {
sl.Children.Add( new Label { Text = "Label1", FontSize = 50, HeightRequest = 100 } );
}
ScrollView sv = new ScrollView { VerticalOptions = LayoutOptions.FillAndExpand };
sv.Content = sl;
ContentPage cp = new ContentPage();
cp.Content = sv;
MainPage = cp;
}
Xamarin是否无法处理触控的Windows设备,如Surface或其他Windows平板电脑?或?
答案 0 :(得分:1)
来自Activity
的覆盖方法是:public boolean onTouchEvent(MotionEvent event)
这是解释整个屏幕中所有触摸事件的一般方法。
如您所知,每个View
都有自己的onTouchEvent()
方法,您可以实现这些方法以添加一些自定义实现。看来这些触摸事件从“内部”元素转到“外部” “元素。我的意思是亲子关系。
因此,在我们的情况下,当触摸事件为水平时,ScrollView
会返回true
。活动的触摸事件仅在ScrollView
触摸事件未自行处理时处理,然后您就可以了。否则你必须覆盖并实现滚动视图的触摸事件,在某些情况下你必须返回false,以便整个布局实现它。
答案 1 :(得分:0)
解决方案是将我的VS 2015模板附带的Xamarin v2.0.0.6482更新为v2.1.0.6529。由于这个问题https://bugzilla.xamarin.com/show_bug.cgi?id=39721,更新有点痛苦。一旦我得到安装滚动开始工作没有其他更改。
在Windows上的旧版本中滚动已被破坏,在Xamarin论坛上由dev验证。