带有 appcompat 的 Xamarin Android 使我的所有文本变为白色
Posted
技术标签:
【中文标题】带有 appcompat 的 Xamarin Android 使我的所有文本变为白色【英文标题】:Xamarin Android with appcompat makes all my text white 【发布时间】:2016-05-08 20:41:10 【问题描述】:我正在尝试为我的 Xamarin android 应用了解和实现 Material Theme。我已经阅读了this blog post 和the Android documentation 等资源。但我想我仍然错过了一些重要的东西。
简而言之:我已将父主题设置为“Theme.AppCompat.Light.DarkActionBar”。并且所有文本(textview)都是白色的。而且我想尽可能地遵守 Material Design 指南。
values/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>
values-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_
android:layout_>
<TextView
android:text="Fragment that shows all Starwars Films information 1"
android:layout_
android:layout_
android:layout_margin="30dp" />
</LinearLayout>
结果如附图所示:
当我将父级更改为 parent="@style/Theme.AppCompat.Light"
或 parent="Theme.AppCompat.Light"
时:
将 SDK Target 设置为 23 有点变化,但仍然是白色字体:
什么属性赋予所有字体白色?为什么?
Xamarin:4.0.0.1717
Xamarin Android:6.0.0.35
所有 Xamarin 支持包:23.1.1.0
【问题讨论】:
【参考方案1】:如果您想为您的应用设置特定颜色,请确保在您的 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。
【讨论】:
以上是关于带有 appcompat 的 Xamarin Android 使我的所有文本变为白色的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin Forms 2.0 AppCompat android 键盘模式
Xamarin - 检索项目的父项时出错:找不到与给定名称“Theme.AppCompat.Light.DarkActionBar”匹配的资源
带有 appcompat 库 v7 的 ActionBar(ava.lang.IllegalStateException:您需要使用 Theme.AppCompat 主题)