2016-06-30 38 views
7

Từ liên kết this.InputTransparent = true không hoạt động ở dạng Xamarin Android

sai nếu phần tử sẽ nhận đầu vào; true nếu phần tử không nên nhận đầu vào và thay vào đó, hãy chuyển đầu vào cho phần tử bên dưới. Mặc định là sai.

Điều tôi muốn là trường nhập không được phép nhận dữ liệu nhập từ người dùng.

InputTransparent=true hoạt động tốt trong iOS nhưng không hoạt động trong Android, nó vẫn cho phép người dùng nhập liệu.

Tôi đã thử IsEnabled=false nhưng điều đó thay đổi giao diện của trường nhập của tôi và tôi không muốn điều đó.

Đây có phải là một loại lỗi nào đó không?

Trả lời

0

InputTransparent không hoạt động cho Android. Tôi tạo ra chỉ đơn giản là làm cho StackLayout:

trong dự án PCL:

public class StackLayoutAdd :StackLayout 
{ 
} 

trong dự án Android:

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

tôi sử dụng này trong XAML của tôi:

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

Đây là công việc để kiểm soát trẻ em.

0

dựa trên this question: này cháy liên tục trong khi chạm vào màn hình, vì vậy việc áp dụng renderer tùy chỉnh và ghi đè lên DispatchTouchEvent

public override bool DispatchTouchEvent(MotionEvent e) 
     { 
      if (Element.InputTransparent) 
      { 
       return false; 
      } 
      return base.DispatchTouchEvent(e); 
     } 
Các vấn đề liên quan