在android xamarin中禁用跨appwide的多点触控

时间:2016-02-03 23:07:58

标签: android xamarin

Xamarin论坛问题链接: https://forums.xamarin.com/discussion/60321/disabling-multitouch-across-the-appwide-in-android-xamarin#latest

有没有办法在Xamarin Android中禁用多点触控应用程序。 我目前有一个PCL项目。使用Xamarin表单UI实现共享代码。

我只想阻止用户在Android中点击多个按钮。

我们所有的按钮都是基于ICommand的,并从viewModel调用。它们都是异步任务(我们希望将它们设置为非阻塞并在后台线程中运行)。 - >这种方法在iOS中运行良好,只想在Android中禁用它App。

我在MainActivity.cs

中尝试了以下内容
public override bool OnTouchEvent(MotionEvent e)
{
    if(e.PointerCount > 1)
    {

     return false;
    }
    else
    {
        return base.OnTouchEvent(e);
    }

}

但它没有任何区别。任何帮助将不胜感激

public override void OnUserInteraction()
    {
        base.OnUserInteraction();
    }

有效,但没有给我触摸事件的次数

1 个答案:

答案 0 :(得分:0)

应用禁用多点触控的应用主题(derived from this answer)。

资源/值下,使用以下代码添加名为 Styles.xml 的文件:

<?xml version="1.0" encoding="UTF-8" ?>
<resources>
    <style name="MyAppTheme" parent="@android:style/Theme.Holo.Light">    
        <item name="android:windowEnableSplitTouch">false</item>
        <item name="android:splitMotionEvents">false</item>
    </style>
</resources>

android:windowEnableSplitTouch表示是否可以在其他支持分割触摸的窗口中拆分触摸。

android:splitMotionEvents表示ViewGroup是否应在触摸事件发送期间将MotionEvents拆分为单独的子视图。

在应用程序主题级别应用这些将强制单击您的应用程序中的所有视图。

然后在您的应用程序中,将样式应用于android:theme上的application属性:

enter image description here

enter image description here

示例清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
        android:versionCode="1" 
        android:versionName="1.0" 
        package="com.companyname.testapp">
    <uses-sdk android:minSdkVersion="11" />
    <application 
        android:allowBackup="true" 
        android:icon="@mipmap/icon" 
        android:label="@string/app_name" 
        android:theme="@style/MyAppTheme">
    </application>
</manifest>

这将禁用整个应用程序中的多点触控。