安卓开发Android开发经验谈Android

android theme中的各个color的含义

2019-05-09  本文已影响5人  宛丘之上兮

今天测试了下colorPrimarycolorPrimaryDarkcolorAccentandroid:textColorPrimaryandroid:windowBackground这五个颜色的含义。Activity页面代码:

public class Test2AC extends AppCompatActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.ac_test2);
        Toolbar toolbar = findViewById(R.id.toolbar);
        toolbar.setTitle(R.string.app_name);
    }
}

在androidmanifest中注册:

        <activity
            android:name=".activity.Test2AC"
            android:screenOrientation="portrait"
            android:theme="@style/AppBaseThemeF">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>

所使用的Theme样式:

    <style name="AppBaseThemeF" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:textColorPrimary">@color/textColorPrimary</item>
        <item name="android:windowBackground">@color/windowbg</item>
    </style>

每个颜色值如图:

页面布局:R.layout.ac_test2

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:app="http://schemas.android.com/apk/res-auto"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="match_parent">
    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:background="@color/colorPrimary"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        android:layout_height="wrap_content">

    </android.support.v7.widget.Toolbar>

    <EditText
        android:layout_width="match_parent"
        android:height="60dp"
        android:text="FFFFFFFFFFFFFFFFffff"
        android:layout_height="wrap_content"/>
    <android.support.design.widget.FloatingActionButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

    </android.support.design.widget.FloatingActionButton>
    <RadioGroup
        android:layout_width="wrap_content"
        android:orientation="horizontal"
        android:layout_height="wrap_content">
        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    </RadioGroup>

</LinearLayout>

最终效果图:

由于页面Activity是根Activity,系统会自带一个ToolBar。上面的ToolBar的title颜色是白色的,而下面的ToolBar的title颜色是colorAccent定义的颜色,上面的ToolBar是系统的,如果使用样式Theme.AppCompat.Light.DarkActionBar,那么title颜色就是白色,如果使用样式Theme.AppCompat.Light,那么title颜色就是colorAccent定义的颜色。

如果不调用getWindow().setStatusBarColor(int color);方法的话,那么状态栏的颜色就是colorPrimaryDark定义的颜色。

当然还有其他很多的颜色,没有一一实验,大致总结下:

color大全可以参考文献2.


参考:

  1. Android: Working with themes and styles – Joanne Kao – Medium
  2. What is the complete list of attributes that you can customize for AppCompat Themes and what are their default values?
上一篇下一篇

猜你喜欢

热点阅读