Xamarin forms change SwichCell Text Color - c#

Is it possible to change the text color of xamarins SwichCell ?
At the moment the text in my SwichCell is colored gray, and I want to change it to black.
My xaml looks like this:
..
<TableView Intent="Data" >
<TableRoot>;
<TableSection>
<SwitchCell Text="Allow Push Notifications"/>
</TableSection>
<TableSection>
<ViewCell>
<ViewCell.View>
<Button Grid.Column="1" Text="Log Out" Clicked="LogOutButtonClick" Margin="-20,-20,-20,-20"/>
</ViewCell.View>
</ViewCell>
</TableSection>
<TableSection>
<TextCell Text="Android Version 1.2.1" TextColor="Black"/>
</TableSection>
</TableRoot>
</TableView>
The only thing regarding this I found here but the example is only for IOS and the other provided solutions uses TextCell and Swich combination, which does not fit my scenario (I think)
Someone has linked a stackoverflow answer regarding Swich here. But it does not work for my situacion since I'm using SwichCell and it does not have the properties that are listed in that answer(also it only has an android version)

If the SwitchCell doesn't expose a BackgroundColor Property, you can just wrap the Switch Control in its own ViewCell.
Can't Confirm the syntax, but something like this:
<ViewCell>
<StackLayout>
<Switch BackgroundColor="Black"/>
</StackLayout>
</ViewCell>

Related

Update a ViewCell in a TableView with UnevenRows doesn´t work correctly Xamarin.Forms

Fill the TableView with so many ViewCells, so you must scroll the page to see the last ViewCell.
If you then update the last ViewCell (change the text of the label) over the Tapped-Event, the label.Text would not be updated..
PS: The ForceUpdateSize is no way the fix the solution, because on iOS the app freeze at the sixth time.
<TableView Intent="Settings" HasUnevenRows="True">
<TableRoot>
<TableSection>
<ViewCell x:Name="DefaultViewCell" Tapped="ItemTapped">
<StackLayout>
<Label x:Name="DefaultLabel" />
</StackLayout>
</ViewCell>
<!--.....-->
</TableSection>
</TableRoot>
</TableView>
I have tested your sample code , it actually happened the phenomenon your describe. Although it not happens in Android ,however it occurs in IOS .Maybe there are something difference about Label between IOS anf Android.
Finally , I found a solution in IOS. You can set a default Text Value to Label ,then Tapped method can work .
As Follow:
<TableView Intent="Settings" HasUnevenRows="True" BackgroundColor="Accent" >
<TableRoot>
<TableSection>
<ViewCell x:Name="DefaultViewCell" Tapped="DefaultViewCell_Tapped">
<StackLayout>
<Label x:Name="DefaultLabel" Text="Default Text "/>
</StackLayout>
</ViewCell>
...
</TableSection>
</TableRoot>
</TableView>

ActivityIndicator not showing in XAML or CodeBehind

I have a weird situation on my Xamarin.Forms app. I´m trying to show an ActivityIndicator, but it is not showing in any condition. I´ve set all conditions on XAML and then I tried on code behind. But I could not get it to work. This is the code:
<StackLayout HorizontalOptions="Center"
VerticalOptions="Center">
<ActivityIndicator x:Name="actIndicator"
Color="Blue"
IsVisible="True"
IsRunning="True"/>
<Label x:Name="lblCargando"
Text="Cargando..." />
<Label x:Name="lblStatus"/>
<Button x:Name="btnCerrar"
Text="Cerrar"
IsVisible="False"
Clicked="Cerrar_Clicked"/>
</StackLayout>
Is there something missing?.
Thanks.
Finally, it seems that there was an issue with the emulator that was executing an old version of code.
I deleted the emulator and re create it and get rid of the problem.

How to partially cut ViewCell separator line in Xamarin Forms?

I am using ViewCell to create rows in my table settings page. I have a setting to select a Light or Dark theme.
<ViewCell Height="50">
<StackLayout x:Name="darkTheme" VerticalOptions="FillAndExpand" Padding="20,0,20,0">
<StackLayout Orientation="Horizontal" VerticalOptions="CenterAndExpand">
<Label Text="Dark" XAlign="Center" FontSize="15"/>
<Label x:Name="darkThemeCheckmark" Text="{x:Static local:FontAwesome.FACheck}" FontFamily="FontAwesome" XAlign="Center" IsVisible="false" FontSize="12" HorizontalOptions="EndAndExpand"/
</StackLayout>
</StackLayout>
</ViewCell>
<ViewCell Height="50">
<StackLayout x:Name="lightTheme" VerticalOptions="FillAndExpand" Padding="20,0,20,0">
<StackLayout Orientation="Horizontal" VerticalOptions="CenterAndExpand">
<Label Text="Light" XAlign="Center" FontSize="15"/>
<Label x:Name="lightThemeCheckmark" Text="{x:Static local:FontAwesome.FACheck}" FontFamily="FontAwesome" XAlign="Center" IsVisible="false" FontSize="12"/>
</StackLayout>
</StackLayout>
</ViewCell>
Whenever I switch from dark to light theme, there is faint light line on the left side between my rows that I can't seem to get rid of. Please refer to the images below:
In my renderer I have set the following:
tableView.LayoutMargins = new UIEdgeInsets() { Left = 20 };
cell.SeparatorInset = new UIEdgeInsets() { Left = 20 };
cell.LayoutMargins = new UIEdgeInsets() { Left = 20 };
Anyone knows how to get rid of this line?
Edit:
I wanted it to look like below:
I am novice to xamarin but, According to this post you need to do this on the UITableView and on your UITableViewCell subclasses.
I hope this will help you. :)
Apologies in advance incase you have already considered this but I believe what you're looking for is 'TableView.SeparatorInset' this would apply to your renderer rather than the xaml your using in your PCL. You can find the documentation around styling the tableviews at this link.
E.G.
TableView.SeparatorInset.InsetRect(new CGRect(4, 4, 150, 2));
Moving the inset of the seperator will get around the problem I saw you mention in the comments of the other answer about the whole table shifting. Please let me know if you've tried this already, it's the simplest solution but there are other options available to you. (They just aren't as nice).
Edit: Example of a way of achieving your goals by creating your own seperators, not my favourite but would also resolve the issue you've highlighted as you'd have complete control over the styling of a seperator. Refer to this Link

Button's Background in Xaml UWP

in a UWP application I have a button its Background property is set to "DeepPink", but whenever I hover my mouse over it, it changes to gray (the default color),
here is my code:
<Button Content="Hello World" Margin="100,0,0,0" Background="DeepPink"/>
Am I missing something??
That only defines the default state of the button, not the hover state.
You can either create a custom control template (you can see an example here), or go the easy way of changing colors with Lightweight styling - I'd recommend the second!
The best alternative would be to create Buttons like UI using Frame and Label. In this case, the background color will remain the same.
Example:
<Frame Padding="8" WidthRequest="100" HasShadow="False" BorderColor="Gray"
HorizontalOptions="Center">
<Label Text="Button" HorizontalOptions="Center" VerticalOptions="Center"/>
</Frame>

CarouselView-Xamarin Forms: Data is not getting displayed

I am trying to display data using carousel view in my forms application. I am not sure what am I missing but data is not getting populated, I have followed almost all available samples but still I have not found any success. Please help me get out of this problem:
I am using the following code in my xaml file:
<forms:CarouselView x:Name="listview" ItemsSource="postIdList" HeightRequest="200" Margin="5">
<forms:CarouselView.ItemTemplate>
<DataTemplate>
<ContentPage >
<StackLayout >
<Label Text="{Binding .}" FontSize="20" TextColor="Black" HorizontalOptions="Center" />
</StackLayout>
</ContentPage>
</DataTemplate>
</forms:CarouselView.ItemTemplate>
</forms:CarouselView>
And I am trying to populate the data in the following manner in .cs file:
List<string> postIdList = new List<string>
{
"Carousel", "Carousel", "carousel"
};
listview.ItemsSource = postIdList;
If I give a background colour for carousal view I am able to see that colour, but text is not getting displayed.
Please let me know my mistake.
In case of a ListView, you need an ObservableCollection instead of a List. Switch it around and see if it works?
On your XAML you are defining a <ContentPage> inside the <Datatemplate>. Replace the <ContentPage> with a <ViewCell> or a <Grid>
Here is a great example on how to use it, you need to keep in mind that CarouselView work like a ListView, it need to have a Datatemplate.

Categories