近期对Material的颜色进行了初步的理解,为了防止之后遗忘,特此记下心得。
主要颜色及其用场大致如下:
colorPrimary:软件的主色调,当下大多数软件颜色都是某个主色 + 白灰底 + 黑色文字组成
textColorPrimary:ToolBar标题颜色 EditText文字颜色
colorPrimaryDark:状态栏颜色(暂未验证)
colorAccent:checkbox、RadioButton的颜色
android:textColor:默认的TextView的文字颜色、Snackbar文字颜色
android:windowBackground:界面的背景颜色
android:colorControlNormal:EditText下划线的颜色(其他使用场景尚待学习)
心得:
1、标题栏的Style和软件主体Style分开:
标题栏最好不要使用软件主体的Style,因为colorPrimary和textColorPrimary分别会被用到标题栏的背景色和文字色,这时例如背景色colorPrimary是深蓝色,那文字色textColorPrimary一般会用白色,但textColorPrimary除了用作标题栏颜色以外,还会用到EditText的文字色等地方,软件里大多数EditText是显示在界面背景色上的,也就是说一般显示在白灰色上,这时,textColorPrimary也是白色的话,文字将会看不见。
所以,软件主体Style和标题栏的Style分开。在主体Style中colorPrimary仍然设定为软件主色,例如蓝色,textColorPrimary会设定为黑色,以便EditText等控件的展示。在标题栏的Style中,同样colorPrimary也可以设定为软件主色(有时也可以设定为白色标题栏),textColorPrimary会设定为白色,该白色文字,仅在标题栏上显示。
2、android:textColor使用有矛盾
android:textColor会显示在默认的TextView中和Snackbar上,Snackbar默认背景色是黑色,所以它的文字一般得是白色,但多数时候TextView的文字颜色是黑色,所以这里有些矛盾。Snackbar本身是为了方便展示一些提示信息,所以它不适合用繁琐的代码设定它的颜色样式,也暂未找到一次性为其设定样式的办法,所以暂时认为android:textColor设定为白色比较合适。TextView需要在软件的各个地方显示,除了黑色以外,还会显示成灰色、浅灰等次要颜色,所以TextView的颜色风格设定多数时候无法使用默认的Style,也就说一般每次都要为其设定一个Style,所以在这个Style中,颜色不使用android:textColor即可。
目前对于Material的学习仍在初级阶段,等有新的心得再来补充。