1.2.3 Released

TheRealJasonSmithTheRealJasonSmith USXamarin Team Xamurai
edited October 2014 in Xamarin.Forms

Important Notes

In this release we have changed the base class of Entry from a ViewRenderer<Entry, Canvas> to a ViewRenderer<Entry, Grid>. While it is unlikely anyone depends on this behavior, if you do you will need to update your code.

Further in 1.3.0 (the next major release) we will be changing the default Grid row and column definitions to use Star instead of Auto. While it is unlikely, if you currently depend on the default of Auto, you should hardcode the value in preparation for the change.

Enhancements:

Android

  • Image/ImageCell will no longer reload images when the ImageSource instance is the same for a reused element.
  • Minor memory improvements when reusing elements (ListView).
  • ListView performance increase. Especially when dealing with lots of labels or nested layouts.

Bug fixes:

Core

  • Fixed an NullReferenceException creating a ResourceDictionary.
  • Fixed layout issues in Grid with ColSpan/RowSpan (Bugzilla 23152).
  • Entry no longer clears one way bindings when the user enters text
  • BindableObject.ClearValue now properly triggers INPC

iOS

  • ImageCells no longer occasionally get reused for TextCells.
  • Fixed an NullReferenceException for Editor.
  • Fixed calling PopToRootAsync throwing NullReferenceException (Bugzilla 23234).
  • Fixed SearchButtonPressed firing for Cancel (Bugzilla 23235).
  • Fixed ListView not respecting BackgroundColor (Bugzilla 23056).
  • Fixed a crash with DisplayActionSheet on iOS 8 (Bugzilla 23358).
  • Fixed ScrollView measurement.
  • Fixed intermittent rotation layout issues with MasterDetailPage (Bugzilla 21950).
  • ActionSheet no longer fails to send result in some situations
  • Pushing pages from custom renderers using native APIs no longer confuses the NavigationRenderer
  • Editor.Focus now works correctly
  • Editor.UnFocus now works correctly
  • Editor.IsEnabled now properly disables editing
  • Fix crash introduced in 1.2.3-pre2 when navigating using MasterDetailPage
  • Fix memory leak when changing pages using Master pane in MasterDetailPage
  • Secondary toolbar items will now clear properly and are sorted correctly
  • MapRenderer is now public
  • ScrollView will no longer exceed its bounds (extension of previous fix to include more cases)
  • Resolve a major memory leak when popping pages from Navigation stack
  • ContentPage inside of a NavigationPage inside of TabbedPage will no longer incorrectly set the tab title from the ContentPage

Android

  • Fixed Focused/Unfocused events for SearchBar (Bugzilla 23296).
  • Fixed issue with label truncation.
  • Fixed a crash with ScrollViews instances being reused.
  • Fixed software keyboard not responding to Focus (Bugzilla 21862).
  • SwitchRenderer no longer causes crashing with Navigation
  • ListView selected background color now properly cleared
  • Image loading reset on ImageCell
  • Fix edge case where images were not loaded asynchronously in ListView
  • Images no longer trigger useless layout cycle when re-used in ListView
  • Minor ListView performance improvements
  • ListView background color will no longer throw a NotFoundException in some cases
  • Fix a GREF leak when dismissing keyboard (performance and memory leak)
  • Keyboard now properly hides when calling Entry.Unfocus
  • ScrollView will no longer crash when inside of a ViewCell
  • ListView background and divider color is now based on the theme color
  • ScrollView children will no longer flow outside of ScrollView bounds
  • Setting MasterDetailPage.Detail should now dispose old Detail properly
  • Reshowing an existing ListView will no longer crash on selection
  • Fix crash in ImageRenderer during dispose cycle

Windows Phone

  • Fixed RotationX/Y to match Android/iOS.
  • Fixed MapType (Bugzilla 22737).
  • Fixed too many toolbars crash.
  • Switch.IsEnabled property now works correctly
  • Secondary toolbar items no longer occasionally duplicate themselves
  • MapRenderer is now public
  • Calling Picker.Items.Clear no longer crashes
  • Entry's inside of a ViewCell will no longer incorrectly horizontally minimize
  • Add support for ApplicationId and AuthToken to FormsMaps.Init (string, string), old overload remains for testing
  • EntryCell now properly supports IsEnabled

XAML

  • Fix error when saving xaml file in Xamarin Studio on Windows where the file is locked by another process
  • BindableObject can now be used as a root element in XAML, not just VisualElements. Allows creating ViewCells as root objects.
«1

Posts

  • JKayJKay USMember ✭✭✭
    edited October 2014

    ScrollView children will no longer flow outside of ScrollView bounds

    I still get the bug I described here:

    forums.xamarin.com/discussion/24134/strange-scrollview-overlapping-behavior-on-android-possible-bug#latest

    I dont know whether that bug fix relates to the bug I mentioned

    In addition I'd just like to mention another slightly annoying bug which is a slider inside a ScrollView on android doesn't behave in the expected way because the ScrollView swallows the drag event. I don't know if anyone has logged this but I thought I'd mention it

  • TheRealJasonSmithTheRealJasonSmith USXamarin Team Xamurai
    edited October 2014

    @JKau I need the full xaml for the page to actually reproduce. When I try it I dont get your behavior. As for the slider, yes we have confirmed this and are working on a fix. It didn't make 1.2.3 however.

  • MichalAniskoMichalAnisko USMember ✭✭

    I have tested ListView scrolling performance using Xamarin Forms 1.2.3.6257.
    On iOS there are still lags during scrolling ListView.
    More in this topis: http://forums.xamarin.com/discussion/comment/78574#Comment_78574

  • JKayJKay USMember ✭✭✭

    @JasonASmith‌

    App Class

    public class App
    {
        public static Page GetMainPage()
        {
            return new NavigationPage(new Page1());
    
        }
    }
    

    Page1 Xaml

    <ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
                           xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
                           x:Class="XamarinLabsTest.Page1">
      <StackLayout>
        <Image x:Name="Image" Source="Dice.png" HeightRequest="300"/>
        <ScrollView x:Name="Scroller">
    
        </ScrollView>
      </StackLayout>
    </ContentPage>
    

    Page1.Xaml.cs

    public partial class Page1
    {
        public Page1()
        {
            InitializeComponent();
    
            StackLayout mainLayout = new StackLayout();
    
            for (int i = 0; i < 40; i++)
            {
                var lbl = new Label();
                lbl.Text = i.ToString();
                lbl.HorizontalOptions = LayoutOptions.Center;
                mainLayout.Children.Add(lbl);
            }
            Scroller.Content = mainLayout;
    
        }
    }
    

    This should reproduce the issue where the items in the ScrollView are now scrolling over the image... (Obviously add an image to your android resources in this case mine is Dice.png) The behavior i was expecting was that the scroller below the image would just scroll and the image always be at the top

    Let me know if you need any more info

  • FredyWengerFredyWenger CHInsider ✭✭✭✭✭

    As the pre-4-discussion is no more reachable public, I have to write my posting once again :-( here…

    Note: To be sure, that the bugs exits also in latest version, I have updated from Pre-4 to latest.

    @JasonASmith‌:

    In addition to the bug with the images and layout in Android (see .pdf in last mail), I have found another important bug in Android today (maybe related/similar to to the "flow-outside-problem" described above):

    In my app, I have a modal search-page, with a StackLayout with:

    • A Label and a Button (this elements should stay static on top)
    • Then a ScrollView (as the search-elements has to be scrollable)
    • in the ScrollView another StackLayout with various elements to search

    The problem is, that - only on Android - the elements in ScrollView do overlay the elements in (master-) StackLayout, so that the label and the button are overlayed, if the ScrollView is scolled:-(
    I also have a ListView at the end of the page, that is not scrollable on the search-page.

    You should be able to see that in my already submitted app (select FreizeitGuide and then click the search-icon). This problem don't exist in WP and iOS (only in Android).

    Further I have seen, that the slider-control don't can be slided in Android, where it works in WP and iOS.

    To this bug, there is already a bug filled and confirmed in bugzilla.

    As I think, it should not be a big problem to fix, it would be nice, if this would be fixed in the next update, so that the slider control can be used in all platforms without problems.

    In addition, it would be nice, if the slider would be enhanced with some property's, so that it can be settled to only use integers (I think. most developers need it this way).

    To this, I have found good information's to customize here:

    infinite-x.net/2014/08/18/integer-based-extended-slider-for-xamarin-forms/

    I have overtaken the example - it works fine (if you would overtake this in the standard-control - I think - many developers would be happy for that;-)

  • TheRealJasonSmithTheRealJasonSmith USXamarin Team Xamurai

    @JKay thank you

  • chris_riesgochris_riesgo USUniversity ✭✭✭

    I've come to like this "new shinies every Friday" thing. Either @JasonASmith‌ sleeps 5 mins each day or he and the team are magic (and hard workers). Maybe both :)

  • MihaMarkicMihaMarkic SI ✭✭✭✭

    @FredyWenger‌ It still is, but is falling down since posts are becoming old

  • TheRealJasonSmithTheRealJasonSmith USXamarin Team Xamurai

    @chris_riesgo‌ prepping for a conference + getting releases out really is cutting down on the sleep time for all of us. Good lord if you're coming to evolve and you see me, just find the nearest caffeinated beverage and a funnel and get me up and running again.

  • FredyWengerFredyWenger CHInsider ✭✭✭✭✭

    @MihaMarkic‌:

    I know, that it still is (but no more public visible) and I was not able to copy-paste including markdown...

  • MihaMarkicMihaMarkic SI ✭✭✭✭

    What do you mean by "no more public visible"?

  • TheRealJasonSmithTheRealJasonSmith USXamarin Team Xamurai

    @FredyWenger‌ I have specifically asked that Support continue to work with you on your issues. While I don't particularly mind if you want to handle the issues here or there, I do in fact get feedback from the support team. Further I have given you some instructions on how you can improve the response time for your issue, however reporting them in as many places as you can does not actually speed up our ability to address them.

  • FredyWengerFredyWenger CHInsider ✭✭✭✭✭

    @JasonASmith‌ :
    If you read my posting, you can see that I have seen a (for me) new bug. And… sorry that I have posted, that the problem with the images/layout still exits with the latest version. Further, I am satisfied if I know, that “someone” cares about “my” bugs - unfortunately, I had no clear information that this happens... until now :-) .

    @MihaMarkic‌ :

    With no more public, I meant, not visible in Xamarin.Forms-Forum as thread (only over direct link).

  • MihaMarkicMihaMarkic SI ✭✭✭✭

    @FredyWenger‌ Odd, I still see it normally, it is just not pinned anymore.

  • TheRealJasonSmithTheRealJasonSmith USXamarin Team Xamurai

    @FredyWenger‌ I would not have asked support to get involved with your case if I didn't care.

  • DevinRoseDevinRose USMember ✭✭

    These are some nice fixes. I see several that I had to put in workarounds for and now can remove them. Good work!

  • chris_riesgochris_riesgo USUniversity ✭✭✭

    @JasonASmith‌ - I'll be at evolve all week. I'll keep an eye out and get you some caffeine - stat.

  • ChaseFlorellChaseFlorell CAInsider, University mod

    Is this release essentially Pre4 or are there any further additions beyond Pre4?

  • ChaseFlorellChaseFlorell CAInsider, University mod

    @chris_riesgo‌: Pretty excited about Evolve actually :) - I'm feeling like a giddy school girl ...

  • QwinQwin USUniversity ✭✭
    edited October 2014

    I just updated from 1.2.3 pre1 to 1.2.3 and WOW what a speed up for Android. It's amazing work guys and everything is still working here on my side. Just a bit disappointing that the label left alignment bug is still there. Hopefully Jason and his team can find it soon! :)

  • EricMaupinEricMaupin USXamarin Team Xamurai

    Is this release essentially Pre4 or are there any further additions beyond Pre4?

    There were a couple very small fixes on top of Pre-4.

    @JasonASmith‌ - I'll be at evolve all week. I'll keep an eye out and get you some caffeine - stat.

    @chris_riesgo‌: Pretty excited about Evolve actually :) - I'm feeling like a giddy school girl ...

    I look forward to meeting you guys!

  • chris_riesgochris_riesgo USUniversity ✭✭✭

    @ermau‌ @ChaseFlorell‌ @JasonASmith‌ - I plan to meet each one of you guys. It's funny meeting people IRL that you banter with/about online every day.

  • TheRealJasonSmithTheRealJasonSmith USXamarin Team Xamurai
    edited October 2014

    @RobertAlMalak.0363‌ can you try making a custom render for your buttons, simply subclass button renderer and add this override:

    public override void ChildDrawableStateChanged(Android.Views.View child) 
    { 
            base.ChildDrawableStateChanged(child); 
            Control.Text = Control.Text; 
    }
    

    Im looking for more people to confirm that fix works for them.

  • QwinQwin USUniversity ✭✭
    edited October 2014

    @JasonASmith‌ ah thanks! I will try it now! The bug has been bugging me for ages now :)

    I will give you an update on the status the app is pretty big so it might take me a couple of minutes.

  • QwinQwin USUniversity ✭✭
    edited October 2014

    @JasonASmith‌ Yeah! it is working ^^ however!!!! It is only working when adding that piece of code to every ButtonRenderer I have. So any subclass of Button that uses ButtonRenderer as well must have that piece of code too. So you guys have to consider informing every user to add that piece of code to a child that uses ButtonRenderer. (even if the custom control inherits from button and button has a renderer that has that piece of code)

    My colleague will test it further if we pass by the same issue again I will let you know. for now THANKS A MILLION :)

  • TheRealJasonSmithTheRealJasonSmith USXamarin Team Xamurai

    I think if we put it into the base ButtonRenderer it should work for everyone everywhere

  • ChaseFlorellChaseFlorell CAInsider, University mod
    edited October 2014

    Worked great for my case as well. For me, I was setting the button to disabled when the Execute() method of a command was being triggered.

    <Button x:Name="SignIn"
        Text="Sign In"
        Command="{Binding SignInCommand}"
        CommandParameter="{Binding}" />
    
    CanExecute()
    {
        return !_isExecuting;
    }
    
    Execute()
    {
        _isExecuting = true;
    
        // sign in
    
        _isExecuting = false;
    }
    

    Here's the complete renderer as I implemented it.

    using [MyApp].Droid.Renderers;
    using Xamarin.Forms;
    using Xamarin.Forms.Platform.Android;
    using View = Android.Views.View;
    
    [assembly: ExportRenderer(typeof(Button), typeof(ButtonFixRenderer))]
    namespace [MyApp].Droid.Renderers
    {
        public class ButtonFixRenderer : ButtonRenderer
        {
            public override void ChildDrawableStateChanged(View child)
            {
                base.ChildDrawableStateChanged(child);
                Control.Text = Control.Text;
            }
        }
    }
    
  • LauraGrossoLauraGrosso ITMember, University
    edited October 2014

    Hello,
    I don't know if it is related to the update (this was working until some time ago), but I have a runtime error with TapGestureRecognizer in 1.2.3.6257.

                Image inImage = new Image();
                inImage.Source = FileImageSource.FromResource ("buttons.myImage.gif");
    
                var tgr = new TapGestureRecognizer ();
                tgr.Tapped +=(s,e)=>OnTapOfAnyImage();
                inImage.GestureRecognizers.Add(tgr);
    

    It compiles but the emulator (on API 19) tells me "Missing method Xamarin.Forms.TapGestureRecognizer::add_Tapped(EventHandler)"

  • TheRealJasonSmithTheRealJasonSmith USXamarin Team Xamurai

    Sounds like the Linker is biting you somehow. That method exists in the codebase. Can you try disabling the linker?

  • LauraGrossoLauraGrosso ITMember, University

    Correct :) thanks

  • LudovicThomasLudovicThomas USMember ✭✭

    Congrats on the good work for list view performance on Android! It's really amazing, even with pretty complex cells. Can't wait to have the improvement on iOS also. Do you have any date for the next release or not yet?
    Again, congrats for the 1.2.3

  • AndyHopperAndyHopper USMember ✭✭

    @JasonASmith‌
    I just tried the workaround, and I'm sad to report that it's not working for us.
    We've derived from ButtonRenderer, exported said renderer, and overrode the ChildDrawableStateChanged method with the above, but many buttons still have their text randomly jump on click. :(

  • TheRealJasonSmithTheRealJasonSmith USXamarin Team Xamurai

    @AndyHopper‌ can you use your renderer to set a background color on your button just to verify they are getting used?

  • QwinQwin USUniversity ✭✭

    @AndyHopper‌ Did you set that code for every ButtonRenderer you have, so even subclasses. (that's what I had to do, to make it work)

  • AndyHopperAndyHopper USMember ✭✭
    edited October 2014

    @RobertAlMalak.0363‌ : In this case, I have no subclasses, so just the one button renderer.

    @JasonASmith‌ Argh! No, it was not kicking in. I had put my Export attribute inside the namespace declaration. It appears to be working fine and dandy now!

  • QwinQwin USUniversity ✭✭

    @AndyHopper‌ Glad you got it working,(FEW stop scaring me like that :P) I am almost certain that this fix is working for everyone (FINALLY) ^^

  • PriyabrataDashPriyabrataDash USMember ✭✭

    I hope this Renderer Fix will be incorporated in Next Pre release.

  • MatthewHailMatthewHail USMember

    Found a re-producable issue using the slide from left edge on the navigation page. if you partially slide and release to stay on the same page and then slide from the left edge to the right to go back the first page disappears and there are no pages on the navigation stack. If you partially release twice and then fully slide back then the app crashes with a task completion error.

    public override bool FinishedLaunching (UIApplication app, NSDictionary options)
        {
            Forms.Init ();
    
            window = new UIWindow (UIScreen.MainScreen.Bounds);
    
            var page1 = new ContentPage ();
            page1.Content = new Button {
                Text = "Go to Page 2"
            };
            var page2 = new ContentPage () {
                Content = new Label { Text = "Page 2 - Slide From Left to Go back" }
            };
            var button = new Button { Text = "Go to Page 2" };
            button.Clicked += (sender, e) => {
                page1.Navigation.PushAsync(page2);
            };
            page1.Content = button;
    
            var rootPage = new NavigationPage (page1);
    
            window.RootViewController = rootPage.CreateViewController ();
            window.MakeKeyAndVisible ();
    
            return true;
        }
    }
    

    This re-producable on both the iOS8 and 7.1 simulators and on device.

  • GaborFurediGaborFuredi HUMember ✭✭

    @JasonASmith‌ I updated to 1.2.3 mostly for this critical bugfix on iOS:
    Resolve a major memory leak when popping pages from Navigation stack

    However, when I do a PopModalAsync, the view is not released. Have you guys just fixed normal pop?

  • TheRealJasonSmithTheRealJasonSmith USXamarin Team Xamurai

    @GaborFuredi‌ if you are using any custom renderers can you try disabling them and see if the leak goes away for you? People sometimes create strong cycles in their custom renderers and forget to implement dispose. If you are not using any custom renderers (literally anywhere) please let me know.

Sign In or Register to comment.