Bug 22796 - Android - InputTransparent doesn't work
Summary: Android - InputTransparent doesn't work
Alias: None
Product: Forms
Classification: Xamarin
Component: Forms ()
Version: 1.2.2
Hardware: Macintosh Mac OS
: Normal normal
Target Milestone: ---
Assignee: Bugzilla
Depends on:
Reported: 2014-09-09 15:47 UTC by Jakub Arnold
Modified: 2014-12-23 09:14 UTC (History)
6 users (show)

Is this bug a regression?: ---
Last known good build:

Notice (2018-05-24): bugzilla.xamarin.com is now in read-only mode.

Please join us on Visual Studio Developer Community and in the Xamarin and Mono organizations on GitHub to continue tracking issues. Bugzilla will remain available for reference in read-only mode. We will continue to work on open Bugzilla bugs, copy them to the new locations as needed for follow-up, and add the new items under Related Links.

Our sincere thanks to everyone who has contributed on this bug tracker over the years. Thanks also for your understanding as we make these adjustments and improvements for the future.

Please create a new report on Developer Community or GitHub with your current version information, steps to reproduce, and relevant error messages or log files if you are hitting an issue that looks similar to this resolved bug and you do not yet see a matching new report.

Related Links:

Description Jakub Arnold 2014-09-09 15:47:41 UTC
After running into https://bugzilla.xamarin.com/show_bug.cgi?id=22794 I tried replacing the BoxView with a StackLayout (or any other layout for that matter), which fixes the part that the background gets rendered. The problem is that even though the layout covers the whole page, it can be clicked through.

Here's a code that reproduces the error. It works as it should on iOS, where the ListView can't be clicked on through the overlay, but on Android it doesn't matter hwat value is InputTransparent set to, it just doesn't work.

    public class TransparencyPage : ContentPage
        public TransparencyPage()
            var layout = new RelativeLayout();

            var list = new ListView { ItemsSource = new[] { "hello", "xamarin", "forms" } };

            var modal = new StackLayout
                BackgroundColor = Color.FromRgba(0, 0, 0, 0.4),
                InputTransparent = false

            layout.Children.Add(list, () => Bounds);
            layout.Children.Add(modal, () => Bounds);

            Content = layout;

Setting the value of InputTransparent on the ListView also has no effect, and it also doesn't seem to matter if I set it to true or false on any of them.
Comment 1 Rajneesh Kumar 2014-09-10 06:44:51 UTC
I have checked this issue and able to reproduce. To reproduce this issue I have
followed the code provided in the bug description.

Stets to reproduce:

1. Create a Xamarin.Forms application in XS
    NewSolution=>C#=>Mobile Apps=>Blank App(Xamarin.Forms.Portable)
2. Add a file to shared project 
    RightClick=>Add=>NewFile=>Forms=>Forms ContentPage Xaml=>give filename and click 'New'
3. Go to Filename.cs page and paste the above code
4. Call the "Filename.cs" page in App.cs
5. Set "iOS" as startup project, Set "InputTransparent = true" in filename.cs page code 
6. Run application, observe that user is able to select or click on ListView items.
9. Set "InputTransparent = false" in filename.cs page code 
10. Run application, observe that user is not able to select or click on ListView items.
11. Set "Android"  as startup project,  Set "InputTransparent = true" in filename.cs page code
12. Run application, observe that user is able to click on ListView items.
13. Set "InputTransparent = false" in filename.cs page code and run the application 
14. Observe that user is able to click on ListView items while setting "InputTransparent = false"

I observed that "InputTransparent"  in working fine in "iOS", while it is not working in "Android". it does't affect I set it to true or false any of them, and user is able to select or click on ListView items.

Screencast: http://www.screencast.com/t/5udIcEj6AA

Environment Info:

=== Xamarin Studio ===

Version 5.3 (build 441)
Installation UUID: 011d70a5-dede-428b-ab04-ef451c2e539d
	Mono 3.8.0 ((no/45d0ba1)
	GTK+ 2.24.23 (Raleigh theme)

	Package version: 308000009

=== Apple Developer Tools ===

Xcode 5.1.1 (5085)
Build 5B1008

=== Xamarin.Mac ===

Version: (Enterprise Edition)

=== Xamarin.Android ===

Version: 4.16.0 (Enterprise Edition)
Android SDK: /Users/MM/Desktop/android-sdk-macosx
	Supported Android versions:
		2.1    (API level 7)
		2.2    (API level 8)
		2.3    (API level 10)
		3.1    (API level 12)
		3.2    (API level 13)
		4.0    (API level 14)
		4.0.3  (API level 15)
		4.1    (API level 16)
		4.2    (API level 17)
		4.3    (API level 18)
		4.4    (API level 19)
		4.4.87 (API level 20)
		4.5    (API level 21)
Java SDK: /usr
java version "1.7.0_65"
Java(TM) SE Runtime Environment (build 1.7.0_65-b17)
Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)

=== Xamarin.iOS ===

Version: (Enterprise Edition)
Hash: 77efa3f
Build date: 2014-08-26 07:59:55-0400

=== Build Information ===

Release ID: 503000441
Git revision: befb6aa1176d37a5f678f4274f340a0159091b7a
Build date: 2014-09-08 17:57:02-04
Xamarin addins: 6dc7c388e31fdfc8014689839d37de0d4622435c

=== Operating System ===

Mac OS X 10.9.4
Darwin MacMini.local 13.3.0 Darwin Kernel Version 13.3.0
    Tue Jun  3 21:27:35 PDT 2014
    root:xnu-2422.110.17~1/RELEASE_X86_64 x86_64
Comment 2 Jakub Arnold 2014-09-10 14:39:50 UTC
Just a small update, a possible workaround is to add a TapGestureRecognizer with no action attached to it, which will cause the view to consume the tap events and they won't propagate to the views below it, such as the following.

   layout.GestureRecognizers.Add(new TapGestureRecognizers());
Comment 3 Jason Smith [MSFT] 2014-09-23 06:49:37 UTC
Fixed in branch, may or may not be in next release depending on risk evaluation.
Comment 4 Jason Smith [MSFT] 2014-09-23 22:07:11 UTC
This is going to be held for the 1.3 release