zoukankan      html  css  js  c++  java
  • Android笔记(七十二) Style和Theme

          我们尝尝需要使用setText、setColor、setTextSize等属性来设置控件的样式,但是每个控件都需要设置这些属性,工作量无疑是巨大的,并且后期维护起来也不方便。

    Style

          Android中的样式(style)包含一组格式,为一个组件设置使用某个样式时,该样式所包含的全部格式都将会应用在这个组件上。

          Android的样式资源文件放在/res/values目录下,其跟元素是<resources>,该元素内包含多个<style>子元素,每个子元素都是一个样式。

          <style>元素指定以下两个属性:

          1.name:指定样式名称

          2.parent:指定该样式所继承的父样式

          每个<style>元素中包含多个<item>子元素,每个<item>子元素定义一个格式。

    /res/values/styles.xml

    <resources xmlns:android="http://schemas.android.com/apk/res/android">
    
        <!--
            Base application theme, dependent on API level. This theme is replaced
            by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
        -->
        <style name="AppBaseTheme" parent="android:Theme.Light">
            <!--
                Theme customizations available in newer API levels can go in
                res/values-vXX/styles.xml, while customizations related to
                backward-compatibility can go here.
            -->
        </style>
    
        <!-- Application theme. -->
        <style name="AppTheme" parent="AppBaseTheme">
            <!-- All customizations that are NOT specific to a particular API-level can go here. -->
        </style>
    
        <style name="TextView">
            <item name="android:background">#00ff00</item>
            <item name="android:textSize">30dp</item>
            <item name="android:textColor">#ffff00</item>
        </style>
    
        <style name="TextView2" parent="@style/TextView">
            <item name="android:textColor">#0f0f0f</item>
            <item name="android:layout_marginTop">10dp</item>
        </style>
    
    </resources>

    activity_main.xml

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context="com.example.styleandtheme.MainActivity" >
    
        <TextView
            style="@style/TextView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="This is a Text" />
    
    
        <TextView
            style="@style/TextView2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="This is a Text" />
    
    </LinearLayout>

    运行结果:

    Theme

          Theme和Style非常相似,同样是定义在values目录下,同样以<resource>作为根元素,同样以<style>定义主题,主题中同样包含<item>每个item表示一个样式

          和Style不同的是Theme不能作用于单个的组件,它是对整个Activity起作用的,Theme定义的格式是改变窗口的外观,例如窗口标题,窗口边框等等

    /res/values/styles.xml

    <resources xmlns:android="http://schemas.android.com/apk/res/android">
    
        <style name="AppBaseTheme" parent="android:Theme.Light"></style>
    
        <style name="AppTheme" parent="AppBaseTheme"></style>
    
        <style name="TextView">
            <item name="android:background">#00ff00</item>
            <item name="android:textSize">30dp</item>
            <item name="android:textColor">#ffff00</item>
        </style>
    
        <style name="TextView2" parent="@style/TextView">
            <item name="android:textColor">#0f0f0f</item>
            <item name="android:layout_marginTop">10dp</item>
        </style>
    
        <style name="MyTheme">
            <item name="android:windowNoTitle">true</item>
            <item name="android:windowFullscreen">true</item>
        </style>
    
    
    </resources>

    MainActivity.java

    package com.example.styleandtheme;
    
    import android.app.Activity;
    import android.os.Bundle;
    
    public class MainActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setTheme(R.style.MyTheme);
            setContentView(R.layout.activity_main);
        }
    }

    运行结果:

  • 相关阅读:
    【L.M.W.Y.D】Scrum Meeting 5
    【L.M.W.Y.D】Scrum Meeting 4
    多喝热水 实验十 团队作业6:团队项目用户验收&Beta冲刺
    多喝热水【Beta】Scrum meeting 4
    多喝热水【Beta】Scrum meeting 3
    多喝热水【Beta】Scrum meeting 2
    多喝热水【Beta】Scrum meeting 1
    多喝热水 实验九 团队作业5:团队项目编码与Alpha冲刺
    多喝热水 [Alpha] Scrum Meeting 7
    多喝热水 [Alpha] Scrum Meeting 6
  • 原文地址:https://www.cnblogs.com/xs104/p/5095061.html
Copyright © 2011-2022 走看看