在选择Entry Control之前,Xamarin.Forms Switch Control在Android上不可见

时间:2014-10-14 07:54:49

标签: android xamarin.forms

我的注册表格大致与此相似

<StackLayout>
    <StackLayout 
        HorizontalOptions="FillAndExpand" 
        Padding="{x:Static local:Styles.LabelBeforeEntryPadding}">
        <Label 
            Text="{Binding LabelPasswort2}" 
            HorizontalOptions="{x:Static local:Styles.LabelHorizontalOptions}" 
            TextColor="{x:Static local:Styles.RegistrationPageTextColor}" />
    </StackLayout>
    <custom:StrypeEntry 
        Text="{Binding Passwort2}" 
        IsPassword="true" 
        IsEnabled="{Binding ControlsEnabled}" 
        HorizontalOptions="FillAndExpand" />
</StackLayout>
<!--Newsletter-->
<StackLayout 
    Orientation="Horizontal" 
    HorizontalOptions="StartAndExpand">
    <Switch 
        IsToggled="{Binding Newsletter}" 
        IsEnabled="{Binding ControlsEnabled}" 
        VerticalOptions="StartAndExpand" 
        HorizontalOptions="StartAndExpand"  />
    <Label 
        Text="{Binding LabelNewsletter}" 
        VerticalOptions="CenterAndExpand" 
        HorizontalOptions="Start" 
        TextColor="{x:Static local:Styles.RegistrationPageTextColor}" />
</StackLayout>
<!--Datenschutz-->
<StackLayout 
    Orientation="Horizontal" 
    HorizontalOptions="StartAndExpand">
    <custom:StrypeSwitch 
        IsToggled="{Binding Privacy}" 
        IsEnabled="{Binding ControlsEnabled}" 
        VerticalOptions="StartAndExpand" 
        HorizontalOptions="StartAndExpand" />
    <Label 
        Text="{Binding LabelPrivacy}" 
        VerticalOptions="CenterAndExpand" 
        HorizontalOptions="Start" 
        WidthRequest="300" TextColor="{x:Static local:Styles.RegistrationPageTextColor}" />
</StackLayout>

问题是,在显示表单时,开关不可见,只有在条目聚焦时它们才会显示。

StrypeEntry只是一个带有Border Corder的自定义条目和一个大写的道具,没有什么花哨的,对于切换我做了一个自定义渲染器来修复不显示的问题。

我已经尝试过对ButtonText Alignment的修复没有帮助(Xamarin.Forms: wrong button text alignment after click (Android)

我也试过这个

public override void ChildDrawableStateChanged(View child)
{
    base.ChildDrawableStateChanged(child);

    Control.Text = Control.Text;
    Control.Checked = Control.Checked;
}

但仍未修复

(我在使用Android 4.4.2的GT-I9505上测试.Xamarin.Forms程序集的版本是1.2.2.0)

请帮帮我, 谢谢

3 个答案:

答案 0 :(得分:8)

似乎我必须回答我自己的问题。

我通过在xaml中向Switch添加高度和宽度请求来修复此问题

希望这有助于其他人。 也许如果你找到更好的解决方案,请告诉我。

问候〜

答案 1 :(得分:0)

我发现将SelectedIndex设置为0(假设列表中有值)可以修复它。

答案 2 :(得分:-1)

是的我在Android 4.4及更低版本中也遇到了同样的问题,并且只有在添加高度和宽度后才能看到。但是棒棒糖在没有添加高度和宽度请求的情况下工作。