InputTransparent = true在Xamarin Forms Android中不起作用

时间:2016-06-30 11:38:53

标签: xamarin xamarin.ios xamarin.android

来自this链接。

  

如果元素应该接收输入,则为false;如果元素不应该接收输入,则应该为true,而应将输入传递给下面的元素。默认为false。

我想要的是,不允许Entry字段接收来自用户的输入。

InputTransparent=true在iOS中运行良好但在Android中不起作用,它仍允许用户提供输入。

我尝试IsEnabled=false,但这改变了我的输入字段的外观,我不想要那样。

这是某种错误吗?

2 个答案:

答案 0 :(得分:0)

InputTransparent不适用于Android。我为StackLayout创建了简单的渲染:

在PCL项目中:

public class StackLayoutAdd :StackLayout
{
}
Android项目中的

[assembly: ExportRenderer(typeof(StackLayoutAdd),   typeof(StackLayoutAddCustom))] 
.....
public class StackLayoutAddCustom : VisualElementRenderer<StackLayout>
{
    public override bool DispatchTouchEvent(MotionEvent e)
    {
        base.DispatchTouchEvent(e);
        return !Element.InputTransparent;
    }
}

我在我的xaml中使用它:

 <StackLayoutAddCustom InputTransparent={Binding IsReadOnly}>
   <Editor />
  ....
 </StackLayoutAddCustom>

这是儿童控制的工作。

答案 1 :(得分:0)

基于this question: 这会在触摸屏幕时不断触发,因此应用自定义渲染器并覆盖 DispatchTouchEvent

 public override bool DispatchTouchEvent(MotionEvent e)
        {
            if (Element.InputTransparent)
            {
                return false;
            }
            return base.DispatchTouchEvent(e);
        }