AndroidTheme常见主题风格详解

AndroidTheme常见主题风格详解本⽂为⾃⼰多年来在Android实战开发过程中总结归纳的⼀些常见问题,现在分享出来希望对初学者有所帮助。
本⽂出⾃门⼼叼龙的博客,转载请注明出处:
⽬录
1. 什么是Style,什么是Theme?
1.1 联系
Style 和 theme:是⼀个包含⼀种 或者 多种格式化 属性 的集合  ,并且 style和theme都是资源,存放在res/values ⽂件夹下
1.2 区别:
style:View级别的,只能在某个Activity的布局⽂件中使⽤
Theme:应⽤级别的,你必须在l中 的<application>或者<activity>中使⽤
2.  在定义Theme的时候@符号和?符号有何区别?空气热源泵
@符号 表明 我们引⽤的资源是前边定义过的(或者在前⼀个项⽬中或者在Android 框架中)。问号?表明 我们引⽤的资源的值在 当前的 主题当中定义过
3. 怎么通过代码给⼀个Activity设置主题?
protected void onCreate(Bundle savedInstanceState) {
setTheme(android.R.style.Theme_Light);
setContentView(R.layout.linear_layout_3);
}
4. AppTheme主题颜⾊colorPrimary,colorPrimaryDark,colorAccent都是什么的颜⾊?
4.1 colorPrimary
App Bar 的背景⾊,即 ActionBar,通常也是⼀个 App 的主题⾊调。不过 ActionBar 已经退出历史舞台,由 Toolbar 代替使⽤,但是Toolbar 需要在 layout ⽂件中单独使⽤ background 属性设置背景⾊,
如:
<android.support.v7.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary" />
4.2 colorPrimaryDark
status bar(状态栏)背景⾊。仅作⽤于 Lollipop 及更⾼版本。
4.3 colorAccent
许多控件在选中状态或获取焦点状态下使⽤这个颜⾊,常见有:
CheckBox:checked 状态
RadioButton:checked 状态
溶洞处理
SwitchCompat:checked 状态
EditText:获取焦点时的 underline 和 cursor 颜⾊
TextInputLayout:悬浮 label 字体颜⾊
等等
4.4 android:navigationBarColor
navigation bar 背景⾊。仅作⽤于 Lollipop 及更⾼版本。
4.5 colorControlNormal
某些 Views “normal” 状态下的颜⾊,常见如:unselected CheckBox 和 RadioButton,失去焦点时的 EditText,Toolbar 溢出按钮颜⾊,等等。
4.6 colorControlActivated
某种程度上,是 colorAccent 的替代者,⽐如对于 CheckBox 和 RadioButton 的 checked 状态,colorControlActivated 属性会覆盖colorAccent 属性的对应颜⾊。
4.7 colorControlHighlight
所有可点击 Views 触摸状态下的 Ripple(涟漪)效果。仅作⽤于 Lollipop 及更⾼版本。
4.8 colorButtonNormal
Button normal 状态下的背景⾊。注意,这种设置与 Button 的 android:background 属性改变背景⾊不同的是,前者在 Lollipop 及更⾼版本上会让 Button 依旧保持阴影和 Ripple 触摸效果。
4.9 android:windowBackground
窗⼝背景⾊,诸如此类的还有:android:background,android:colorBackground 等。
4.10 android:textColorPrimary
EditText 的 text color,等等⽂本颜⾊。
4.11 navigationIcon
返回按钮的图⽚
5.常见的主题风格都有哪些?
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"
6.ThemeOverlay使⽤特点?
当在某个Activity有些特殊要求的时候就可以⽤ThemeOverlay继承全局的样式,来修改⾃⼰的个性化样式,注意了该样式的引⽤只能设置在布局⽂件上,不能在清单⽂件⾥⾯进⾏设置
定义:
<style name="AppTheme.Secondary" parent="ThemeOverlay.AppCompat">
<item name="colorAccent">@color/colorPrimary</item>
</style>重金属快速检测
调⽤:
<FrameLayout
android:background=”@color/dark_background”
android:theme="@style/ThemeOverlay.AppCompat.Dark”>
<TextView />
</FrameLayout>
单独给toolbar设置样式
<android.support.v7.widget.Toolbar xmlns:android="schemas.android/apk/res/android"    android:layout_width="match_parent"
android:layout_height="?android:attr/actionBarSize"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
android:background="?attr/colorPrimary">
</android.support.v7.widget.Toolbar>
7. ⾃定义样式属性
7.1 ⾸先在l 定义属性名称
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="AppTheme.NoActionBar">
<attr name="baseTitleTextColor" format="reference|color" />
<attr name="titleDividerColor" format="reference|color" />
<attr name="titleDividerLine" format="dimension" />
</declare-styleable>
</resources>
7.2 在l中使⽤⾃定义的属性
<style name="AppTheme.NoActionBar">
涂料分散机
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="baseTitleTextColor">#2a2a2a</item>
螺钉连接<item name="titleDividerLine">1dp</item>
<item name="titleDividerColor">@android:color/transparent</item>
</style>
7.3 在布局⽂件中引⽤样式
<View
android:id="@+id/view_divider"
android:layout_width="match_parent"
android:layout_height="?attr/titleDividerLine"
android:background="?attr/titleDividerColor"/>
8. ⾃定义⼀个tootbar的样式?
8.1 定义⼀个NoActionBar的样式
<style name="TestAppTheme" parent="Theme.AppCompat.Light">            <item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="colorPrimary">#6a1b9a</item>
<item name="colorPrimaryDark">#ec407a</item>
<item name="colorAccent">#f44336</item>
</style>
8.2 布局中引⼈Toolbar
<android.support.v7.widget.Toolbar
xmlns:android="schemas.android/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:background="#4e342e"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize">
</android.support.v7.widget.Toolbar  >
8.3 在Activity中设置Toobar为ActionBar
public class TestAppComActivity extends AppCompatActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_testappcompat);
Toolbar toolbar = (Toolbar) findViewById(lbar);
365t
setSupportActionBar(toolbar);
}
}

本文发布于:2024-09-25 02:31:40,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/277385.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:属性   背景   状态   标题栏   样式   定义
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议