修改手机主题背景和强调色设置后,UI显示发生改变的问题

来源:互联网 发布:淘宝买沙发靠谱吗 编辑:程序博客网 时间:2024/05/01 04:06

模拟器默认的手机背景色为深色,如果我们创建如下的Pivot枢轴控件这样定义:

            <controls:Pivot Height="696" Name="pivotStockListPage" LoadedPivotItem="pivotStockListPage_LoadedPivotItem">
                <controls:Pivot.Title>
                    <TextBlock x:Name="PageTitle" Text="股票列表" Margin="0,0,0,0" Style="{StaticResource PhoneTextTitle1Style}" Height="96" TextAlignment="Left"Foreground="White"/>
                </controls:Pivot.Title>
                <controls:Pivot.HeaderTemplate>
                    <DataTemplate>
                        <TextBlock Foreground="White" Margin="0,10,0,0" Text="{Binding Path=PivotItemHeaderText}" FontSize="{StaticResource PhoneFontSizeExtraLarge}" Height="60" Width="{Binding Path=PivotItemHeaderWidth}">                            
                        </TextBlock>
                    </DataTemplate>
                </controls:Pivot.HeaderTemplate>

                  ……
            </controls:Pivot>

会发现显示时文字的颜色为白色,如果没有定义前景色Foreground="White",实际显示效果还是白色。

但是,一旦把手机主题背景颜色调整为浅色,你会发现这个时候这两个TextBlock的文字都看不见了。要解决这个问题,可以通过采用系统主题强调色,或者整个界面的所有前景色和背景色自行指定,防止因为系统主题设置的改变而产生不和谐的UI。

对于菜单,可以直接设置背景色和字体颜色为系统默认的效果:<shell:ApplicationBar IsVisible="True" IsMenuEnabled="True" BackgroundColor="#FF212021"  ForegroundColor="White">

 

在实际测试时,建议多修改一下系统主题,然后测试显示效果。测试时要全面,比如应该包含应用程序列表里面的图标效果和主屏幕上的背景效果。比如掌中新浪,将强调色设置成红色时图标(本身有红色)就显示不清楚了。

 

几个系统主题资源:

SetValue(Microsoft.Phone.Shell.SystemTray.ForegroundColorProperty, Application.Current.Resources["PhoneAccentColor"]); :Application.Current.Resources["PhoneAccentColor"] 为主题设置里面的强调色。

Style="{StaticResource PhoneTextAccentStyle}" :主题样式资源PhoneTextAccentStyle应用字体 (PhoneFontFamilySemiBold)、字体大小 (PhoneFontSizeNormal) 和前景 (PhoneAccentBrush)。

 

如何确定主题背景?


        Visibility darkBackgroundVisibility =  (Visibility)Application.Current.Resources["PhoneDarkThemeVisibility"];
        if (darkBackgroundVisibility == Visibility.Visible)
        {
            //深
        }
        else
        {
            //浅
        }

 

如何确定主题强调色(MSDN上称为“个性色”)?SDK7.1上目前有10种强调色:

 

下表列出了 10 种标准个性色及其以红色、绿色、蓝色 (RGB) 值和十六进制 (Hex) 值表示的相应颜色值。

个性色

RGB

Hex

示例

蓝色

27,161,226

#FF1BA1E2

THEME_Accents_Blue

褐色

160,80,0

#FFA05000

THEME_Accents_Brown

绿色

51,153,51

#FF339933

THEME_Accents_Green

浅绿色(黄绿色)

162,193,57

#FFA2C139

THEME_Accents_Lime

洋红

216,0,115

#FFD80073

THEME_Accents_Magenta

芒果色(橙色)

240,150,9

#FFF09609

THEME_Accents_Orange

粉红

230,113,184

#FFE671B8

THEME_Accents_Pink

紫色

162,0,255

#FFA200FF

THEME_Accents_Purple

红色

229,20,0

#FFE51400

THEME_Accents_Red

青色(铬绿)

0,171,169

#FF00ABA9

THEME_Accents_Viridian
 

浅绿色洋红个性色的值已在 Windows Phone OS 7.1 中更改。

在 Windows Phone OS 7.0 中,浅绿色洋红个性色分别为#FF8CBF26#FFFF0097

在 Windows Phone OS 7.1 中,浅绿色洋红个性色分别为#FFA2C139#FFD80073

 

        
        Color currentAccentColorHex =  (Color)Application.Current.Resources["PhoneAccentColor"];

        switch (currentAccentColorHex.ToString())
        {
            case "#FF1BA1E2": 蓝

            case "#FFA05000": 褐

            case "#FF339933": 绿

            case "#FFE671B8": 粉红

            case "#FFA200FF": 紫色

            case "#FFE51400":红色

            case "#FF00ABA9": 青(深绿)

            case "#FF8CBF26": 黄绿
            case "#FFA2C139"(SDK7.1): 黄绿
            case "#FFFF0097": 洋红
            case "#FFD80073"(SDK7.1): 洋红
            case "#FFF09609"(SDK7.1): 橙
            default: 其他(移动运营商和硬件制造商定制)

        }

 

Windows Phone 中提供的主题属性:

  1. 画笔资源
  2. 颜色资源

  3. 字体名称

  4. 粗细

  5. 字体大小

  6. 文本样式

  7. 主题可见性和不透明度

 

原创粉丝点击