使用appcompat的Xamarin Android使我的所有文本都变白

时间:2016-01-31 10:38:39

标签: android xamarin material-design

我正在尝试理解并实现我的Xamarin Android应用的Material Theme。我已阅读this blog postthe Android documentation等资源。但我想我仍然缺少一些重要的东西。

简而言之:我将我的父主题设置为'Theme.AppCompat.Light.DarkActionBar'。所有文本(textview)都是白色的。我希望尽可能地坚持材料设计指南。

值/ styles.xml

  <style name="MyTheme" parent="MyTheme.Base">
  </style>

  <style name="MyTheme.Base" parent="@style/Theme.AppCompat.Light.DarkActionBar">
    <item name="android:windowNoTitle">true</item>
    <!--We will be using the toolbar so no need to show ActionBar-->
    <item name="android:windowActionBar">false</item>
  </style>

值-V21

  <style name="MyTheme" parent="MyTheme.Base">
    <item name="android:windowContentTransitions">true</item>
    <item name="android:windowAllowEnterTransitionOverlap">true</item>
    <item name="android:windowAllowReturnTransitionOverlap">true</item>
    <item name="android:windowSharedElementEnterTransition">@android:transition/move</item>
    <item name="android:windowSharedElementExitTransition">@android:transition/move</item>
  </style>

的AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="MaterialDesignTest1.MaterialDesignTest1" android:versionCode="1" android:versionName="1.0">
    <uses-sdk android:targetSdkVersion="22" android:minSdkVersion="21" />
    <application android:label="MaterialDesignTest1"  android:theme="@style/MyTheme"></application>
</manifest>

Mainactivity.cs

[Activity(Label = "MaterialDesignTest1", MainLauncher = true, Icon = "@drawable/icon")]
public class MainActivity : FragmentActivity
{
    /* Omitted the viewpager & tablayout code */
}

我正在加载到标签中的FilmsFragment.axml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:text="Fragment that shows all Starwars Films information 1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="30dp" />
</LinearLayout>

结果如附图所示: White font in the fragment

当我将父级更改为parent="@style/Theme.AppCompat.Light"parent="Theme.AppCompat.Light"时:

enter image description here

将SDK Target设置为23会稍微改变,但仍然是白色字体:

enter image description here

什么属性赋予所有字体白色?为什么?

Xamarin:4.0.0.1717

Xamarin Android:6.0.0.35

所有Xamarin支持包:23.1.1.0

1 个答案:

答案 0 :(得分:0)

如果您想为您的应用设置特定颜色,请确保在MyTheme.Base中添加

   <!-- Main theme colors -->
    <!--   your app branding color for the app bar -->
    <item name="android:colorPrimary">@color/primary</item>
    <!--   darker variant for the status bar and contextual app bars -->
    <item name="android:colorPrimaryDark">@color/primary_dark</item>
    <!--   theme UI controls like checkboxes and text fields -->
    <item name="android:colorAccent">@color/accent</item>

您也应该使用AppCompatActivity而不是FragmentAcitivty。