021_02UI之自定义主题和样式

  在Android的应用的资源文件中有一个style.xml文件,可以对某个类型的组件指定大致相似的格式,比如字体、颜色、背景色等。这样可以不必为某个View组件去重复指定这些属性,而且有利于后期的代码修改和维护。Style格式可以被多个View组件所使用,被需要这一类样式集合的View组件所使用。

  与样式非常相似,主题资源的xml文件通常也放在/res/values目录下,主题一般为整个应用或者某个Activity的样式,换句话说主题是针对窗体级别或整个应用程序的样式

  主题的设置有两种方式

    (1)在AndroidMainfest.xml中为Activity指定主题

    (2)在Activity创建时调用 setTheme方法给某个Activity添加主题

/res/values/styles.xml 为主题和两个textView设置的style

 1 <resources>
 2
 3     <!--
 4         Base application theme, dependent on API level. This theme is replaced
 5         by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
 6     -->
 7     <style name="AppBaseTheme" parent="android:Theme.Light">
 8         <!--
 9             Theme customizations available in newer API levels can go in
10             res/values-vXX/styles.xml, while customizations related to
11             backward-compatibility can go here.
12         -->
13     </style>
14
15     <style name="mystyle">
16         <item name="android:layout_width">wrap_content</item>
17         <item name="android:layout_height">wrap_content</item>
18         <item name="android:textColor">#FF0000FF</item>
19         <item name="android:textSize">20sp</item>
20         <item name="android:background">#8800FF00</item>
21         <item name="android:paddingTop">10dp</item>
22         <item name="android:paddingRight">20dp</item>
23         <item name="android:paddingLeft">20dp</item>
24         <item name="android:paddingBottom">10dp</item>
25         <item name="android:layout_marginLeft">50dp</item>
26         <item name="android:layout_marginTop">20dp</item>
27         <item name="android:textStyle">bold</item>
28     </style>
29
30      <style name="mystyle2"  parent="mystyle">
31         <item name="android:textColor">#FF0000</item>
32     </style>
33
34      <style name="MyTheme" >
35          <item name="android:colorBackgroundCacheHint">@null</item>
36         <!--<item name="android:windowIsTranslucent">true</item>
37           <item name="android:windowNoTitle">true</item>
38          <item name="android:windowFullscreen">true</item> -->
39         <item name="android:windowBackground">@drawable/fun1</item>
40      </style>
41
42 </resources>

本例采用setTheme方法添加主题

 1 package com.example.day21_02styleandtheme;
 2
 3 import android.app.Activity;
 4 import android.os.Bundle;
 5 import android.view.Menu;
 6 import android.view.MenuItem;
 7
 8 public class MainActivity extends Activity {
 9
10     @Override
11     protected void onCreate(Bundle savedInstanceState) {
12         super.onCreate(savedInstanceState);
13         setTheme(R.style.MyTheme);
14         setContentView(R.layout.activity_main);
15     }
16 }
 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:paddingBottom="@dimen/activity_vertical_margin"
 6     android:paddingLeft="@dimen/activity_horizontal_margin"
 7     android:paddingRight="@dimen/activity_horizontal_margin"
 8     android:paddingTop="@dimen/activity_vertical_margin"
 9     tools:context="com.example.day21_02styleandtheme.MainActivity"
10     android:orientation="vertical">
11
12     <TextView
13         style="@style/mystyle2"
14         android:text="功能1" />
15      <TextView
16         style="@style/mystyle"
17         android:text="功能2" />
18 </LinearLayout>

效果图:

时间: 2024-08-13 04:55:22

021_02UI之自定义主题和样式的相关文章

Extjs自定义主题

每一个ExtJS程序都是从一个Application类的实例开始的.它包含了你程序的全局设置. 自定义主题的例子:新建一个工作空间:windows控制台窗口下进入有sdk所在的目录输入命令:sencha –sdk  ~/ generateworkspace my-workspace,而后会发现在sdk所在的目录下会出现myworkspace文件夹.其中有连个目录分别为:ext,packages (1)建立一个应用程序测试项目: 在myworkspace目录下输入命令:sencha –sdk ex

Android学习系列(40)--Android主题和样式之系统篇(下)

Widget样式(Widget Style) 特别说明,此处定义大量的系统内置控件的样式,对于重写原生控件的样式具有很大的参考价值. <!-- Widget styles --> <item name="absListViewStyle">@android:style/Widget.AbsListView</item> <item name="autoCompleteTextViewStyle">@android:st

Material使用05 自定义主题、黑夜模式\白天模式切换

需求: 1 不使用materil依赖内建的主题,使用自己创建的主题 2 利用自己创建的主题实现白天模式和黑夜模式 1 自定义主题 1.1 创建自定义主题文件 them.scss // 引入material自定义主题支持 @import '[email protected]/material/theming'; // 引入material公用的主题风格 @include mat-core(); // 自定义颜色 $my-app-primary: mat-palette($mat-blue); $m

element 如何自定义主题

自定义主题 在我学习element的时候,就直接忽略了.现在返回来学习一下 ,原来 通过自定义主题可以改变elemnt中默认的一些样式.这样,对于一些不想用elment自带但是用到比较多的样式,可以进行修改. 看了很多关于自定义主题的文章,其实都是 差不多的, 我想自己写一遍,加深一下印象,也希望能给别人带来帮助. 这篇博客的思路,总结性比较强,指的大家j借鉴:https://blog.csdn.net/young_emily/article/details/78591261 改变原有的elem

Flutter自定义主题并切换保存

现在越来越多的应用程序支持黑/白主题切换了,在Flutter中更是简单,Flutter库中提供了ThemeData.dark和Theme.light两个默认主题.在main.dart初始化MaterialApp的时候直接设置进去即可 MaterialApp( title: 'Flutter Demo', theme: ThemeData.light(), home: MyHomePage(title: 'Flutter Demo Home Page'), ); 一.自定义主题 知道怎么设定主题了

Vue的elementUI实现自定义主题

使用vue开发项目,用到elementUI,根据官网的写法,我们可以自定义主题来适应我们的项目要求,下面来介绍一下两种方法实现的具体步骤,(可以参考官方文档自定义主题官方文档),先说项目中没有使用scss编写,用主题工具的方法(使用的较多) 第一种方法:使用命令行主题工具使用vue-cli安装完项目并引入element-ui(具体可参考第二种方法中的介绍) 一.安装工具1,安装主题工具 npm i element-theme -g 2,安装chalk主题,可以从 npm 安装或者从 GitHub

Android自定义进度条样式

最近在做一个widget,上面需要一个progressbar,产品经理和设计师给出来的东西是要实现一个圆角的progress和自定义的颜色,研究一小下,分享出来给大家哦. 测试于:Android4.0+ 操作步骤: 1.创建你的layout文件引用progressbar如下,标红处引用你自定的样式: <ProgressBar android:id="@+id/progressDownload" style="?android:attr/progressBarStyleH

【wordpress】wordpress自定义主题

wordpress每个主题至少要有这两个文件 – style.css 和 index.php. index.php 告诉主题中所有的元素如何布局; style.css 则告诉主题中所有的元素该如何展示,以及它们的样式. 几个名词: Template(模板) 其实就是一个代码集,主题中很多地方会利用到这个代码集,所以把它们整合成一个模板,这样就就不必一遍遍输入这些重复代码. Template file(模板文件) 一个包含一个或者多个代码集(模板)文件.每个主题是由多个模板文件组成的,比如:ind

Android中自定义下拉样式Spinner

Android中自定义下拉样式Spinner 本文继续介绍android自定义控件系列,自定义Spinner控件的使用. 实现思路 1.定义下拉控件布局(ListView及子控件布局) 2.自定义SpinerPopWindow类 3.定义填充数据的Adapter 效果图 一.定义控件布局 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http:/