Xamarin Forms - Disable loading spinner on ListView - xamarin

I have a Xamarin forms app where I'm using ListViews to display some data, with pull to refresh enabled. When the ListView is pulled and starts the refresh it has its own spinner animation. However, this doesn't display when the page first loads, and so I've wired in a separate ActivityIndicator to indicate loading for just the first time. It's styled different though. I would prefer to use the ActivityIndicator, since it's what's used through the rest of the app, but I haven't found a way to disable the spinner animation on the ListView yet. Is it possible to disable it? Any suggestions would be appreciated, thanks!

There are a few ways I can think of to solve this.
Don't use Pull-to-refresh. Xamarin.Forms has this built in and you can't customize it without using renderers and altering controls. Instead, start your refresh another way (ToolbarItem, etc) and continue using your custom ActivityIndicator.
Customize the existing ListViews UIRefreshControl. You may be able to use a renderer or "Effect" to customize the RefreshControl being used by the native control. This would allow you to style it a little close to what your custom indicator looks like.
Change the color of the spinner. This is my least favorite option. You could workaround this by changing the color of the spinner to match the background so you don't see it.

Related

Dragging over touchable opacity on React-Native Web

Problem
Using react native web, I am trying to allow for drag to work over a touchable opacity. This will allow mobile users to scroll by dragging over the touchable opacity.
Attempts
Since there are two touchable opacities within a single view, I have been trying to fix it for the view (parent) so that it works for the whole section. So, within the view tag, I have tried handles like: onResponderRelease, onResponderStart, onStartShouldSetResponder, onStartShouldSetResponderCapture, and a few others in an attempt to find something that works, as it seems those handles would fix issues for react native. I have assigned them to false and true, however none of those fixed my issue.
Question
How can I allow components to maintain their ability to be clicked, while also allowing users to click and drag (scroll on mobile)? Thanks for any help!

KendoUI version of JQUERY animated side navigation

I am fond of the type of side navigation menu that is common in mobile apps. An example is: http://www.jqueryscript.net/menu/jQuery-Animated-Side-Navigation-Menu-Plugin-Sidebar.html
Which works also for web pages. However, the vast majority of my page is in KendoUI, and I don't want to load another framework just for that.
Is there a combination of tricks with Kendo (draw control for example) that I could use to get the same effect?
Alternatively, I am all wet. I just want a quick way to have a "pop-up" of settings that are only occasionally used, and most of the time save the screen real-estate. So maybe just a button and a pop-up window is the correct approach?
Any advice?

How to change Display Alert default focus on a button?

I am using Xamarin forms DisplayAlert. I have two buttons in it one is light blue and another is Darker blue. I guess it is focus effect causing the difference.
can I set focus as per requirement? I tried to search documentation but no luck.
DisplayAlert("Caption", "Message", "Cancel", "Send");
Cancel and send are buttons on display alert. Default focus on Cancel.I want to switch focus to Send without changing position of buttons.
I am pretty sure that Xamarin doesn't (and will not) support providing focus to a specific button using a DisplayAlert since this feature exists in iOS only. Remember that Xamarin.Forms is meant to target all platforms, and not iOS only, and introducing a "focus" variable for a single platform would thus be a no-go.
What you can do, is to swap your two buttons around as you mentioned yourself.
If that is not an option, have a look at what you can achieve using third party libraries such as Acr.UserDialogs.
If that doesn't help you either, you will probably need to write a Custom Control or use an ActionSheet instead.
Good luck.

How to populate Picker items before open, using Xamarin.Forms

Using Xamarin.Forms, how do I populate a Picker with items, immediately before the Picker opens?
We have a number of pickers on the same page and it would be inefficient to populate all items upfront, as some of the queries are expensive. For reference, I'm trying to get this working on Xamarin.Android first, and am using the latest stable version - 1.2.36257 at the time of writing.
I've tried:
Focused event - This almost works, but changes to Items are not applied until the next time the Picker opens.
TapGestureRecognizer - The Tapped event doesn't seem to be fired. Perhaps it doesn't work with a Picker.
There's nothing that the Xamarin.Forms Picker exposes from what I can see either, that would allow you to achieve what your wanting.
TapGesture's can be troublesome. For instance I quickly tried it on WindowsPhone, and that is not recognizing the TapGesture either. Your also find some different behavior with different controls as well - with the same response not being uniform across platforms.
I tried hooking into the Picker PropertyChanged / PropertyChanging, and this has the outcome exactly the same as attempting to hook into the Focused event handler that you experienced, with it only working after the picker has initially been displayed.
The only way around this would be to write a custom renderer to achieve what you want to do.
Within that, you could then expose custom events such as OnBeforeAppearing, that would allow you to then pre-load the picker with the items you need from the page at time of use.

Xamarin.Forms custom loading gif as activity indicator

I would just like to know of something is possible as I am very new to Xamarin and I am on a time limit for an assignment. I don't mind some trial and error, but don't want to waste the time if it isn't possible
I want to have an animated gif as an activity indicator (it is a logo).
I have it working in a WebView - is it possible, in Xamarin,Forms to have this appear as an overlay while waiting on long running methods?
For example. if user clicks on a button, the app gets some info from a webservice then displays in a page. While waiting I would like to show the webview (or any other way to show an animagted gif).
So I am not asking for the code, but just if it is posible.
Thanks in advance
I was able to work this out
With the animated(loading) gif running in the WebView page I called a couple of async methods using following
await Task.WhenAll(method1(), method2());
await Navigate.PushAsync(new NextPage(var1, var2));
The laoding gif (which is an animated logo) runs until the tasks are complete then navigates to the next page
Using an ImageView apparently this doesn't look like its possible to playback animated Gif's as can be seen here http://forums.xamarin.com/discussion/17448/animated-gif-in-image-view.
So i very much doubt the ActivityIndicator would, if it could. In the ActivityIndicator I can't see any functionality to change the content of the what is shown when it is busy.
You could always create your own animated image view by creating a custom renderer instead however. It isn't particularly hard to cycle images at pre-determined gaps if you have a list of the images split up.
GIF images can be used in Xamarin forms to show custom activity indicator, since in Xamarin forms it is not possible to show GIF images directly web-view must be used. For android image must be placed inside assets folder and Build Action must be set to AndroidAsset. For iOS image must be placed inside resources and Build Action must be set to BundleResource. AbsoluteLayout can used for placing the image to center, IsBusy property of mvvm helpers nuget can used for controlling the visibility of the activity indicator. Dependency service must used for getting the image path. You can check this https://github.com/LeslieCorrea/Xamarin-Forms-Custom-Activity-Indicator for example.
Xamarin.Forms now supports .GIF, from version 4.4-pre3 and up on iOS, Android and UWP. Before using, first add the .GIF to the platforms projects, or as an embedded resource in the shared project and then use it like a regular image. The API on the Image control has been extended with the IsAnimationPlaying bindable property.
For e.g., loader.gif is added in all platform projects, then below code make it animating.
<Image Source="loader" IsAnimationPlaying="True" WidthRequest="36" HorizontalOptions="CenterAndExpand" VerticalOptions="CenterAndExpand" />

Resources