【问题标题】:Picker Title color is unchangeable选择器标题颜色不变
【发布时间】:2017-01-30 14:09:18
【问题描述】:

使用 xamarin 表单 (pcl)

创建选择器

<Picker x:Name="Branches" 
  TextColor="White" Title="Click to choose Branch"
  Grid.Row="3" Grid.Column="1"
  SelectedIndex="{Binding Branches}">
    <Picker.Items>
        <x:String>Id</x:String>
        <x:String>Name</x:String>
    </Picker.Items>
</Picker>

为什么 Title 黑色的 TextColor 甚至很难我在 XAML 中明确将其设置为白色?

【问题讨论】:

    标签: c# xaml xamarin xamarin.forms


    【解决方案1】:

    更新:Xamarin.Forms v3.6

    Xamarin.Forms v3.6 introduces Picker.TitleColor.

    现在可以直接设置 Picker 的 TitleColor 而无需解决方法。

    XAML

    TitleColor="Red"

    <Picker x:Name="Branches" 
      Title="Click to choose Branch"
      TitleColor="Red"
      TextColor="White" 
      Grid.Row="3" 
      Grid.Column="1"
      SelectedIndex="{Binding Branches}">
        <Picker.Items>
            <x:String>Id</x:String>
            <x:String>Name</x:String>
        </Picker.Items>
    </Picker>
    

    代码

    myPicker.TitleColor = Color.Red

    var myPicker = new Picker
    {
        TitleColor = Color.Red
    };
    

    说明

    Xamarin.Forms 不允许您设置 Picker.Title 的颜色。

    解决方法

    将标题文本添加为​​Picker.Items 中的第一项。

    然后,将初始 Picker.SelectedIndex 设置为 0。这将在页面加载时默认在屏幕上显示 Picker.Items(也就是我们的标题)中的第一项。

    然后,将事件处理程序添加到Picker.SelectedIndex 以防止用户选择标题。它将检查用户是否选择了Picker.Items(也就是我们的标题)中的第一项,如果true 自动将Picker.SelectedIndex 更改为1

    using System;
    
    using Xamarin.Forms;
    
    namespace PickerTitleColor
    {
        public class App : Application
        {
            public App()
            {
                var picker = new Picker();
                picker.Items.Add("Select an item");
                picker.Items.Add("Item1");
                picker.Items.Add("Item2");
                picker.Items.Add("Item3");
                picker.TextColor = Color.Red;
                picker.SelectedIndex = 0;
    
                picker.SelectedIndexChanged += (sender, e) => 
                {
                    if (picker.SelectedIndex == 0)
                        picker.SelectedIndex = 1;
                };
    
                var content = new ContentPage
                {
                    Title = "Custom Picker Title Color",
                    Content = picker
                };
    
                MainPage = new NavigationPage(content);
            }
        }
    }
    

    【讨论】:

    • “iOS 和 Android 规定选择器标题必须始终为灰色,以向用户表明列表中没有任何项目被选择。”。但是灰色可能是非白色背景的问题,这肯定是一个错误的决定,它限制了开发人员定义自己的主题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-07
    • 1970-01-01
    • 1970-01-01
    • 2017-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多