(Android Studio)ActionBar's Theme/Style [ActionBar主题风格修改]

(1)默认theme代码如下:

(Android Studio)ActionBar's Theme/Style [ActionBar主题风格修改]_第1张图片

运行结果:

(Android Studio)ActionBar's Theme/Style [ActionBar主题风格修改]_第2张图片(Android Studio)ActionBar's Theme/Style [ActionBar主题风格修改]_第3张图片

视觉效果:ActionBar为Dark,背景为Light。

 

 

 

 

(2)将theme改为Light:

(Android Studio)ActionBar's Theme/Style [ActionBar主题风格修改]_第4张图片

运行结果:

(Android Studio)ActionBar's Theme/Style [ActionBar主题风格修改]_第5张图片(Android Studio)ActionBar's Theme/Style [ActionBar主题风格修改]_第6张图片

视觉效果:ActionBar和背景都为Light。

 

(3)与默认theme效果相同的Theme.Holo.Light.DarkActionBar:

(Android Studio)ActionBar's Theme/Style [ActionBar主题风格修改]_第7张图片

 

出现错误:这个指令只能用于API level 14以上的版本。

(Android Studio)ActionBar's Theme/Style [ActionBar主题风格修改]_第8张图片

 

修改后就没错了吧

(Android Studio)ActionBar's Theme/Style [ActionBar主题风格修改]_第9张图片

 

恩 妥妥的了 运行来庆祝一下

(Android Studio)ActionBar's Theme/Style [ActionBar主题风格修改]_第10张图片(Android Studio)ActionBar's Theme/Style [ActionBar主题风格修改]_第11张图片

 

视觉效果:看起来与默认theme效果完全相同,用“看起来”是因为笔者暂时还不确定它们是否有区别。

 

(4)将theme修改为Theme.Holo

 (Android Studio)ActionBar's Theme/Style [ActionBar主题风格修改]_第12张图片

运行结果:

(Android Studio)ActionBar's Theme/Style [ActionBar主题风格修改]_第13张图片(Android Studio)ActionBar's Theme/Style [ActionBar主题风格修改]_第14张图片

 

视觉效果:ActionBar和背景都变为Dark。

 

(5)试一下将theme一段删去:

(Android Studio)ActionBar's Theme/Style [ActionBar主题风格修改]_第15张图片

运行结果:同(4)。别打我……我并非有意偷懒,因为这个贴图实在是太麻烦了,这个结果有无穷种可能,没办法列举穷尽。

是这样的:其实有规律可循,并不是没有使用theme就使用默认的theme。它将会运行最近最后一次有theme时生成的app。所以theme自然也是上一次的theme。如果最后一次的theme设为ActionBar和文本都为Dark,删去theme后下次也是这样;如果最后一次的theme设为ActionBar和文本都为Light,删去theme后下次也是这样;如果……不码了……。应该都懂的了,恩……

 

(6)重点:

在manifest.XML文件中,下的theme修改后会应用到app全局;在单个下的theme设置只会应用到单一的activity中。没图说个丁日,所以上图顶万言:

(Android Studio)ActionBar's Theme/Style [ActionBar主题风格修改]_第16张图片

 

(Android Studio)ActionBar's Theme/Style [ActionBar主题风格修改]_第17张图片

(Android Studio)ActionBar's Theme/Style [ActionBar主题风格修改]_第18张图片

 

前面的几组测试都是在下修改theme的。所以所有Activity——无论是第一个MainActivity还是第二个DisplayMessageActivity,显示的theme都一样。

 

下图将删去下的theme,分别将MainActivity和DisplayMessageActivity的theme设为@android : style/theme.Holo(Dark) 和

@android : style/theme.Holo.Light (Light) ,你会发现,你会讶异,你是我最压抑最深处的秘密:

(Android Studio)ActionBar's Theme/Style [ActionBar主题风格修改]_第19张图片

 

(Android Studio)ActionBar's Theme/Style [ActionBar主题风格修改]_第20张图片(Android Studio)ActionBar's Theme/Style [ActionBar主题风格修改]_第21张图片

没有任何问题了,跟预期想的完全吻合。

 

接下来再尝试和每个的theme同时进行设置(为了有更直观的结果,将设为 @android : style/Theme.Holo(Dark);下面两个设为 @android : style/Theme.Holo.Light(Light)):

(Android Studio)ActionBar's Theme/Style [ActionBar主题风格修改]_第22张图片

 

(Android Studio)ActionBar's Theme/Style [ActionBar主题风格修改]_第23张图片(Android Studio)ActionBar's Theme/Style [ActionBar主题风格修改]_第24张图片

运行结果是两个activity的Theme都是Light。因此可以得出结论:单个的的theme设置将覆盖的theme设置。可理解为的子类,子类的theme方法覆盖了父类的theme方法,因此调用子类的版本。

转载于:https://www.cnblogs.com/KardelXiao/p/4782223.html

你可能感兴趣的:(移动开发)