导航:首页 > 操作系统 > androidtheme使用

androidtheme使用

发布时间:2023-04-01 21:11:18

Ⅰ 如何在 android 应用程序中使用自定义主题

在Android中,定义外观最简单的方式是直接设置属性在视图对象上。由于要对整个应用程序设置样式,这种方法就显得不是很方便了。因此,我们可以创建
样式来绑定视图属性。但要注意的是,样式只能设置在xml里。这意味着,我们在创建/加载视图的时候,只能一次设置一个样式。下面是如何在res
/values/styles.xml文件中给TextView设置属性的示例。

<style name="CustomText" parent="<a href="http" target="_blank" rel="nofollow">@android</a> :style/TextAppearance.Medium">
<item name="android:textSize">20sp</item> <item name="android:textColor">#008</item>
</style>

我们引用@style/CustomText样式应用在我们的layout.xml文件中。该样式引用了一个父样式
@android:style/TextAppearance.Medium。由于开始样式引自android: 命名空间,那么我们这个样式默认也随android平台。

创建主题绑定样式

假设我们要改变我们所有TextView的文字大小和颜色,并且不需要明确设置每一个TextView。这是一个非常常见的情况,幸运的
是,Android提供了一个非常强大的主题机制。从本质上讲,主题就是样式资源本身,使用“key”指向具体的样式。一个视图对象基于这个key可以查
看到具体的样式。下面是一个简单的例子,在res/values/themes.xml文件:

<style name="Theme.MyApp" parent="<a href="http" target="_blank" rel="nofollow">@android</a> :style/Theme.Holo">
<item name="android:textAppearance">@style/CustomText</item>
</style>

如上所述,主题是样式资源本身,所以我们声明一个Theme.App继承自Android平台提供的holo主题。我们将我们的CustomText样式
指定到android:textAppearance属性。属性就是一个预定义的“变量”,它可以被其他资源元素引用。事实上,它也可以创建自定义属性在
res/values/attr.xml文件。

现在有趣的事情来了。我们的主题Theme.MyApp不仅可以通过AndroidManifest.xml的设置应用到Activity上,它也可以在
运行时在代码中设置。你将不得不重新启动当前Activity(或使用ContextWrapper应用UI的主题部分),但它使主题更加动态。

Ⅱ Android系统自带样式Theme总结

本文从网上复制,给自己做笔记的,摘自: http://blog.csdn.net/hongya1109110121/article/details/11985545

Android系统自带样式(@android:style/) (转)

1 android:theme="@android:style/Theme.Holo.Light.NoActionBar.Fullscreen"

布局页面最上面 不会显示  android:icon="@drawable/ic_launcher"中的值和android:label="@string/app_name"的值。

2 android:theme="@style/AppTheme"

布局页面最上面 显示  android:icon="@drawable/ic_launcher"中的值和android:label="@string/app_name"的值。

其他

在AndroidManifest.xml文件的activity中配置

1、android:theme="@android:style/Theme"

默认状态,即如果theme这里不填任何属性的时候,默认为Theme

2、android:theme="@android:style/Theme.NoDisplay"

任何都不显示。比较适用于只是运行了activity,但未显示任何东西

3、android:theme="@android:style/Theme.NoTitleBar“

背景主题的没有标题栏的样式,默认如果没有设置的话,显示黑背景

4、android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

背景主题的没有标题栏且全屏的样式,默认为黑背景

5、android:theme="@android:style/Theme.Black"

默认状态下黑背景

6、android:theme="@android:style/Theme.Black.NoTitleBar"

黑背景主题的没有标题栏的样式

7、android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"

黑背景主题的没有标题栏且全屏的样式

8、android:theme="@android:style/Theme.Light"

默认状态下亮背景,与上述黑背景Theme.Black相反

9、android:theme="@android:style/Theme.Light.NoTitleBar"

亮背景主题的没有标题栏的样式,与Theme.Black.NoTitleBar相反

10、android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen"

亮背景主题的没有标题栏且全屏显示的样式,与Theme.Black.NoTitleBa.Fullscreenr相反

11、android:theme="@android:style/Theme.Dialog"

对话框样式 将整个activity变成对话框样式出现

12、android:theme="@android:style/Theme.InputMethod"

Window animations that are applied to input method overlay windows

13、android:theme="@android:style/ Theme.Panel"

删除掉所有多余的窗口装饰,在一个空的矩形框中填充内容,作用范围相当于把dialog中的所有元素全部去掉,只是一个空的矩形框,且此为默认的样式

14、android:theme="@android:style/ Theme.Light.Panel"

删除掉所有多余的窗口装饰,在一个空的矩形框中填充内容,作用范围相当于把dialog中的所有元素全部去掉,只是一个空的矩形框,且默认是light的样式

15、android:theme="@android:style/Theme.Wallpaper"

使用墙纸做主题,默认状态。

16、android:theme="@android:style/ Theme.WallpaperSettings"

使用墙纸做主题,默认是使用将上一个界面调暗之后作为主题

17、android:theme="@android:style/ Theme.Light.WallpaperSettings"

使用墙纸做主题,默认Light状态

18、android:theme="@android:style/Theme.Wallpaper.NoTitleBar"

使用墙纸做主题,且没有标题栏

19、android:theme="@android:style/Theme.Wallpaper.NoTitleBar.Fullscreen"

使用墙纸做主题,且没有标题栏,且全屏显示

20、android:theme="@android:style/Theme.Translucent"

半透明状态下的背景,将运行此activity之前的屏幕作为半透明状态作为此activity运行时的样式。

21、android:theme="@android:style/Theme.Translucent.NoTitleBar"

半透明状态下没有标题栏的背景,将运行此activity之前的屏幕作为半透明状态作为此activity运行时的样式。

22、android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"

半透明状态下没有标题栏且全屏的背景,将运行此activity之前的屏幕作为半透明状态作为此activity运行时的样式。

摘自: http://blog.csdn.net/hongya1109110121/article/details/11985545

Ⅲ android l theme怎么用

theme主要用来定制样式风格统一的页面设置一些属性的,类似无标题,或者标题栏背景统一
theme有@theme的用法?
一般都是android:theme = "@style/XXXXtheme"类似这种吧

这个style如果是你自定义的那就直接用@style/XXX,从你定义的style里面应用进来;如果不是你定义的,引用系统的就是@android:style/XXXX,都是需要用@的,就类似我们直接定义一个系统空间listview,如果你不修改它的ID,那么它就是"@id/list"中各种,我们要修改的话就改成"@+id/listview1"。

如果你认可我的回答,敬请及时采纳,
~如果你认可我的回答,请及时点击【采纳为满意回答】按钮
~~手机提问的朋友在客户端右上角评价点【满意】即可。
~你的采纳是我前进的动力
~~O(∩_∩)O,记得好评和采纳,互相帮助。

Ⅳ Android如何定制主题

 目的:

为了加强用户体验,增强品牌效应,使我们的产品有自己独特的风格,主题的定制将会是必然趋势……

然而Android原生系统是不支持主题定制的,所以如何来定制主题,如何做得更好,需要大家集思广益……

策略:

将介绍两种定制主题的机制:

1.根据Android Configuration Qualifier机制,加入我们自己的JRDTheme定制。

2.用主题包的形式,根据用户选择不同的主题,而加载不同主题包中的资源。

基本原理:

首先介绍方式一:

Android Configuration Qualifier

Android 系统为一个项目提供了多套可供选择的资源,通过命名特殊的资源文件夹来区别它们。系统在运行的时候,根据设备的当前配置为每个应用加载合适的资源。

这些不同的资源都是放在每个应用的res/目录下面的,特殊的命名方式是-:

: 资源文件夹的名字,与默认资源文件夹保持一致

: 根据设备不同配置,需要使用的资源文件夹名字

Android系统根据优先级的先后顺序已经支持多种Configuration Qualifier,如图1:

如何添加 Jrd Theme Resources

JrdTheme 的核心策略是当我们设定了不同的主题后,会自动的替换我们想要替换的资源(Framework&App)。具体步骤如下:

1. 工程师从UE哪里获得我们想要改变的主题资源,

2.把这些资源放到对应模块的res/目录下,以Contacts模块为例,假如我们想要定制drawable、color、layout。

原来在Contacts模块中默认的资源目录如下:

res/

layout/

main.xml

info.xml

drawable/

icon.png

values/

colors.xml

定制后的资源目录如下:

res/

layout/

main.xml

info.xml

layout-jrdthemexxx/

main.xml

info.xml

drawable/

icon.png

drawable-jrdthemexxx/

icon.png

values/

colors.xml

values-jrdthemexxx/

colors.xml

Notes: jrdthemexxx 是其中一个 主题的 Qualifier,如果有多个主题,那么将会有多个jrdthemexxx存在。

3.与原来一样编译这些模块,push到手机中即可。

这只是一个guide ,具体实现还要细化…… 目前在diablo、beetle上面已经用这种方式实现了……我在smartiii上尝试过,机制没问题,但是改动的范围太大了,比较麻烦。

方式二:

核心思想:系统中有多套主题资源包,并且应用可以用相同的资源ID来访问不同资源包中对应的资源。 Android原生系统的资源访问流程 对应用来说,资源访问主要有下面三种方

式:

第一、比较普遍的方式是使用xml定义,并且通过AAPT工具生成一个R文件,列出资源的索引来让Android系统自己去遍历整个资源树的方式来访问。

第二、通过Resources接口来访问,使用Resources类的getDrawable、getString等接口来获取资源。

第三、通过AssetManager类的接口去访问,使用这个类的open方法来返回一个InputStream对象得到资源。

其实这三个访问方式只是Android资源访问中整个流程中在不同层次对外提供的三个接口,到底层的实现都是殊途同归的。

因此我们实际上需要修改的部分主干是在访问资源具体路径前,按照当前系统主题设置访问不同资源APK下的文件

即是把原生Android中资源ID和资源文件路径之间一对一的关系改为一对多的关系。

例子如下:如果原有资源ID和资源文件路径关系为:

R.drawable.image01 = 0x7F020001

通过系统的资源查找之后找到文件路径为 /system/app/frameworks-res.apk下的res/drawable_hdpi/icon.png

在AssetManager native中去读取资源并上传。

那么我们需要做的是在传入路径去读取资源时把文件路径替换为/data/app/SystemTheme01.apk下的res/drawable_hdpi/icon.png

Ⅳ Android常见主题

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="Theme.Translucent" //透明背景

android:theme="Theme.Translucent.NoTitleBar" //透明背景并无标题

android:theme="Theme.Translucent.NoTitleBar.Fullscreen" //透明背景并无标题,全屏

android:theme="Theme.Panel " //面板风格显示

android:theme="Theme.Light.Panel" //平板风格显示

Ⅵ 记一次使用Android AppCompat(兼容库)的Theme所引发的思考

最近在优化App,首先从界面上优化,对所有页面的ui绘制进行查看和优化,其中发现在

Api 小于21的手机设备上的效果图为:

运行在Api大于21的设备上的效果图为:

同样是使用统一兼容主题

在图1中发现了过度绘制现象。就是这一端绿色的区域。可我们的完全定义的是全屏的啊?为什么会出现这种情况呢。

在解释上面现象之前,首先了解下Android使用Theme的正确用法:

Android的Theme的主要来源分为以下三种:

这里主要探讨前两者,自定义主题不做探讨,使用Android系统自带的Theme要加上"android:",如:android:Theme.Light,使用v7兼容包的主题就不需要前缀了,直尺灶接:Theme.AppCompat。现在看看有哪些主题:

1.系统自带主题:

Theme.AppCompat主题是兼容主题,是什么意思呢?

意思就是说如果运行程序在手机API是21则就是相当于使用Material主题,如果运行程序的手机API是11则就相当于使用Holo主题,以此类推。

兼容v7会被Google公司不断升级:

比如appcompat-v7-21.0表示升级到向API 21兼容

比如appcompat-v7-23.2表示升级到向API 23兼容

所以要使用最新的兼容包。

我们已经知道了统一使用兼容包的话,目标设备API 为21及以上时会使用Material主题,API 为11时使用Holo主题,下面我们来比较下Material与Holo主题高困和的区别:

通过比较发现Holo主题的windoContentOverlay使用ab_solid_shadow_holo为背景,而Material未设置任戚盯何背景。再来看下windoContentOverlay是何许人也,查看源码得知:

onCreate()中设置的Window.FEATURE_NO_TITLE对应的窗口修饰布局文件为screen_simple.xml:

windowContentOverlay代表content的foreground并且填充宽,位于content的顶部,代表内容区域顶部的阴影背景(与TitleBar和ActionBar都没有关系),因为这种属性是在无标题栏的时候才会被设置到content的top,所以有标题栏或者actionBar时也不会出现这种情况。现在问题就迎刃而解了,修改Theme为:

增加<item name="android:windowContentOverlay">@null</item>

Ⅶ androidtheme添加图片

android选项菜单怎么添加图片
android选项菜单怎么添加图片,Android图片选择框架--PictureSelector

weixin_39756235
转载
关注
0点赞·464人阅读
图片.png

功能特点

支持通过拍照获取图片

支持通过相册获取图片

支持图片裁切

支持仿IOS底部弹出选择菜单ActionSheet效果

支持6.0动态授予权限

解决图片有黑边问题

解决7.0调用相机crash问题

解决小米miui系统调用系盯闹察统裁剪图片功能crash问题

使用

Step 1. 添加JitPack仓库

在项弯没目的build.gradle添加JitPack仓库

allprojects {

repositories {

...

maven { url "https://jitpack.io" }

}

}

Step 2. 添加依赖

在需要使用的mole中添加依赖

dependencies {

compile 'com.github.wildma:PictureSelector:1.0.0'

}

或者引用本地lib

compile project(':pictureselector')

Step 3. 配置清单文件所需activity

android:name="com.wildma.pictureselector.PictureSelectActivity"

android:theme="@android:style/Theme.Translucent.NoTitleBar"/>

Step 4. 拍照或者从相册选择图片

/**

* create方法参数一是上下文,在activity中传activity.this,在fragment中传fragment.this。参数二为请求码,用于结果回调onActivityResult中判断

* selectPicture方法参数分别为图片的裁剪宽、裁剪高、宽比例、高比例。默认不传则为宽200,高200,宽高比例为凯茄1:1。

*/

PictureSelector

.create(MainActivity.this, PictureSelector.SELECT_REQUEST_CODE)

.selectPicture(200, 200, 1, 1);

Step 5. 获取裁剪后的图片地址

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

super.onActivityResult(requestCode, resultCode, data);

/*结果回调*/

if (requestCode == PictureSelector.SELECT_REQUEST_CODE) {

if (data != null) {

String picturePath = data.getStringExtra(PictureSelector.PICTURE_PATH);

Ⅷ Android 的style和theme

例子

Theme是针对窗体级别的,改变窗体样式;
Style是针对窗体元素级别的,改变指定控件或者Layout的样式

简单的说就是Theme里面有包含了好多好多Style

常用于Toolbar下

比如

android:theme="@style/AppTheme.AppBarOverlay设置了Toolbar的主题
app:popupTheme="@style/AppTheme.PopupOverlay"设置了Toolbar节点下的view的主题

默认情况下我们使用theme为android:Theme.Holo.Light.DarkActionBar那么ActionBar文字是白的,ActionBar Overflow弹出的是黑底白字,如果需求是白底黑字那么只要设置toolbar的app:popupTheme="ThemeOverlay.AppCompat.Light"

附上一张官方的

装载自 关于Android的style和theme

Ⅸ Android关于Theme.AppCompat相关问题的深入分析

先来看这样一个错误:

No resource found that matches the given name '@style/Theme.AppCompat.Light'

对于这个错误,相信大部分Android开发者都遇到过,可能很多朋友通过网络或者Google已经解决了这个问题,但是网上大部分都只给出了解决方法。

正所谓知其然,知其所以然,本文将从此问题出发,深入分析探讨导致此问题的原因、由其衍生出来的一系列问题及其解决方案。

Android的SDK版本很多,新的SDK版本包含了很多新的特性,为此Google官方提供Android Support Library package来保证高版本SDK的向下兼容。通过使用此包,可以让拥有最新SDK特性的应用运行在API lever 4(即Android 1.6) 及更高版本的设备之上。

在4.0之前Android可辩州以说是没有设计可言的,在4.0之后推出了Android Design,从此Android在设计上有了很大的改善,而在程序实现上相应的就渗灶厅是Holo风格,所以你看到有类似 Theme.Holo.Light Theme.Holo.Light.DarkActionBar 就是4.0的设计风格,但是为了让4.0之前的版本也能有这种风格怎么办呢?这个时候就不得不引用v7包了,所以对应的就有 Theme.AppCompat.Light Theme.AppCompat.Light.DarkActionBar ,如果你的程序最小支持的版本是API14(即Android 4.0),那么可以不用考虑v7的兼容。

Android在5.0版本推出了Material Design的概念,这是Android设计上又一大突破。对应的程序实现上就有 Theme.Material.Light Theme.Material.Light.DarkActionBar 等,但是这种风格只能应用在在5.0版本的手机,如果在5.0之前应用Material Design该怎么办呢?同样的引用appcompat-v7包,这个时候的 Theme.AppCompat.Light Theme.AppCompat.Light.DarkActionBar 就是相对应兼容的Material Design的Theme。

由此可以得出以下情形会导致本文一开始提出的问题。

AndroidManifest.xml文件里面

此时的解决方法有如下几种:

此时再将项目values,values-v11,values-v14目录下的styles.xml文件里面style都改为

3.2 将此目录下的项目导入到Eclipse中

3.3 右键点击我们的Android项目,选择Properties,左侧选择Android,在下方Library框里丛隐点击Add,最后选择appcompat_v7,确定。
此时问题就解决了。

出现此问题的原因是appcompat_v7已经更新到了最新版本并且高于编译环境的SDK版本,此时在Android SDK Manager将SDK及编译工具更新到最高版本

升级完成之后右键点击appcompat_v7项目,选择Properties,选择Project Build Target 为最新版本,这样就OK了。

通过以上的分析,相信朋友们以后再遇到AppCompat相关的问题应该不再是问题了。欢迎大家留言讨论。

纯净日报 https://github.com/laucherish/PureZhihuD
一个采用 RxJava + Retrofit + OkHttp 框架实现的开源软件

Ⅹ Android开发主题样式详解

application标签中的@style/AppTheme引用自哪个文唯弊枝件夹中的styles.xml,这是根据运行此程序的手机系统来决定的,卜逗如果手机系统的API版本是11以上就是v11/styles.xml,API版本是14以上就是v14/styles.xml,以此类推。我们可以通过修改AppBaseTheme的父主题来实现我们需要的样式,此文章主要就是来讨论这个主题如何修改。

使用android系统中自带的主题要加上"android:",如:android:Theme.Black
使用v7兼容包中的主题不需要前缀,如:Theme.AppCompat

系统自带主题:
API 1:
android:Theme 根主题
android:Theme.Black 背景黑色
android:Theme.Light 背景白色
android:Theme.Wallpaper 以桌面墙纸为背景
android:Theme.Translucent 透明背景
android:Theme.Panel 平板风格
android:Theme.Dialog 对话框风格

API 11:
android:Theme.Holo Holo根主题
android:Theme.Holo.Black Holo黑主题
android:Theme.Holo.Light Holo白主题

API 14:
android:Theme.DeviceDefault 设备默认根主题
android:Theme.DeviceDefault.Black 设备默认黑主题
android:Theme.DeviceDefault.Light 设备默认白主题

API 21: (网上常说的 Android Material Design 就是要用这种主题)
android:Theme.Material Material根主题
android:Theme.Material.Light Material白主题

兼容包v7中带的主题:
Theme.AppCompat 兼容主题的根主题
Theme.AppCompat.Black 兼容主题的黑色主题
Theme.AppCompat.Light 兼容主题的白色主题

以下都是指“包含”,比如包含“Dialog”表示对话框风格
比如Theme.Dialog、Theme.Holo.Dialog、Theme.Material.Dialog、Theme.AppCompat.Dialog都是对话框风格

Black 黑色风格
Light 光明风格
Dark 黑暗风格
DayNight 白昼风格
Wallpaper 墙纸为背景
Translucent 透明背景
Panel 平板风格
Dialog 对话框风格
NoTitleBar 没有TitleBar
NoActionBar 没有ActionBar
Fullscreen 全屏风格
MinWidth 对话框或者ActionBar的宽度根据内指敏容变化,而不是充满全屏
WhenLarge 对话框充满全屏
TranslucentDecor 半透明风格
NoDisplay 不显示,也就是隐藏了
WithActionBar 在旧版主题上显示ActionBar

阅读全文

与androidtheme使用相关的资料

热点内容
山西联通app是什么软件 浏览:354
更新电视剧最快的网站 浏览:134
兄弟训诫文严厉 浏览:607
李楠程序员 浏览:288
山推管家app怎么改密码 浏览:680
贷款结束什么时候解压 浏览:142
18命令方块代码 浏览:936
安卓手机视频怎么传到mac电脑上 浏览:932
马缨花app是什么 浏览:6
python金融分析招聘 浏览:60
可以直接写电影就有免费 浏览:108
北京一卡通app换了手机怎么弄 浏览:155
有程序员小说 浏览:688
点开就能看的网址 浏览:450
单片机控制和plc控制系统设计 浏览:29
她通常去电影院英文翻译 浏览:274
阿里个人云服务器叫什么名字 浏览:298
萱萱日记 浏览:707
芯片app有什么用 浏览:204
DaDa兔 浏览:969