javaee论坛

普通会员

225648

帖子

324

回复

338

积分

楼主
发表于 2019-11-07 13:17:03 | 查看: 681 | 回复: 1

Theme和Style都定义在res/values/styles.xml文件夹下,它们非常相似,定义方式也是相同的,所以无法将二者从定义方式上分别开来。

二者的相同点是:它们都是多个属性的集合,为了避免视图样式在定义时需要添加大量重复的属性;

它们的不同点是:Theme是应用级别的,针对的是application和activity,需要在AndroidManifest.xml中的<application>或者<activity>中使用style是View级别的,只能在某个Activity的布局文件中使用

2.例://fileName=res/values/styles.xml//Theme例:<stylename="AppTheme"parent="Theme.AppCompat.Light.DarkActionBar"><itemname="colorPrimary">@color/colorPrimary</item><itemname="colorPrimaryDark">@color/colorPrimaryDark</item><itemname="colorAccent">@color/colorAccent</item></style>//Sytle例:<stylename="BaseTextStyle"><itemname="android:textSize">16sp</item><itemname="android:textColor">#000000</item></style>//Style继承:<stylename="TextStyle1"parent="BaseTextStyle"><itemname="android:textStyle">bold</item></style>

在manifest文件中使用Theme:

<application...android:theme="@style/AppTheme">//给application设置theme<activityandroid:name=".MainActivity"android:theme="@style/Theme.AppCompat.NoActionBar"/>//给activity设置theme</application>

或者也可以通过代码设置Activity的主题:

protectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setTheme(android.R.style.Theme_Light);setContentView(R.layout.linear_layout_3);}3.定义Theme时一些常用属性的含义:

1)colorPrimary:用来定义ActionBar的颜色,但是ActionBar已经被ToolBar代替,ToolBar的颜色需要手动设置为colorPrimary,这样就可以将ToolBar的颜色设置为当前Activity使用的主题中colorPrimary属性的颜色了;

<android.support.v7.widget.Toolbarandroid:layout_width="match_parent"android:layout_height="wrap_content"android:background="?attr/colorPrimary"/>

2)colorPrimaryDark:状态栏背景色,仅作用于Lollipop及更高版本

3)colorAccent:很多控件在选中时会采用这个颜色,例如:CheckBox,RadioButton,SwitchCompat的checked状态时的颜色,EditText获取焦点时下划线的颜色

4)colorControlActivated和colorControlNormal属性,和colorAccent类似并覆盖colorAccent控件选中/未选中或获取焦点/失焦会采用这个颜色

5)android:windowIsTranslucent窗体透明

6)android:windowNoTitle无标题

4.常用的Theme:android:theme="@android:style/Theme.Dialog"将一个Activity显示为能话框模式android:theme="@android:style/Theme.NoTitleBar"不显示应用程序标题栏android:theme="@android:style/Theme.NoTitleBar.Fullscreen"不显示应用程序标题栏,并全屏android:theme="Theme.Light"背景为白色android:theme="Theme.Light.NoTitleBar"白色背景并无标题栏android:theme="Theme.Light.NoTitleBar.Fullscreen"白色背景,无标题栏,全屏android:theme="Theme.Black"背景黑色android:theme="Theme.Black.NoTitleBar"黑色背景并无标题栏android:theme="Theme.Black.NoTitleBar.Fullscreen"黑色背景,无标题栏,全屏android:theme="Theme.Wallpaper"用系统桌面为应用程序背景android:theme="Theme.Wallpaper.NoTitleBar"用系统桌面为应用程序背景,且无标题栏android:theme="Theme.Wallpaper.NoTitleBar.Fullscreen"用系统桌面为应用程序背景,无标题栏,全屏android:theme="Translucent"半透明android:theme="Theme.Translucent.NoTitleBar"半透明、无标题栏android:theme="Theme.Translucent.NoTitleBar.Fullscreen"半透明、无标题栏、全屏android:theme="Theme.Panel"android:theme="Theme.Light.Panel"5.此外,还可以利用Theme来自定义Activity切换时的动画:

用Theme自定义Activity切换的动画


0

帖子

268

回复

272

积分
沙发
发表于 2019-12-21 23:28:26

如果你智商能再高点,也许我会上当

您需要登录后才可以回帖 登录 | 立即注册

触屏版| 电脑版

技术支持 历史网 V2.0 © 2016-2017