Android开发 — UI界面之threme和style

yizhihongxing

Android开发 -- UI界面之theme和style

什么是theme和style

在Android开发中,theme和style都是用来定义UI界面样式的属性。其中,theme是一种整体的样式方案,可以在AndroidManifest.xml文件中定义,对整个应用程序生效;而style是一组UI控件封装的样式,通常保存在styles.xml文件中,可以在应用程序中任意使用。

如何定义theme和style

定义theme

要定义一个theme,我们需要在AndroidManifest.xml文件中添加如下代码:

<application
    android:theme="@style/AppTheme">
    ...
</application>

这里的@style/AppTheme表示我们要使用项目中定义的样式方案。样式方案的定义,我们要在styles.xml文件中进行,如下:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

这里我们定义了一个名为AppTheme的样式,将它的parent属性设为了Theme.AppCompat.Light.NoActionBar,表示继承自Android系统提供的Theme.AppCompat.Light.NoActionBar样式方案。另外,我们还为它定义了三个颜色属性,分别为colorPrimary,colorPrimaryDark和colorAccent,这些属性可以在应用程序中任意使用。

定义style

要定义style,我们需要在styles.xml文件中添加如下代码:

<style name="MyButtonStyle" parent="Widget.AppCompat.Button">
    <item name="android:layout_width">match_parent</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:textSize">16sp</item>
    <item name="android:textColor">@color/colorAccent</item>
    <item name="android:background">@drawable/btn_bg</item>
</style>

这里我们定义了一个名为MyButtonStyle的样式,继承自Widget.AppCompat.Button样式,表示该样式作用于Button控件。我们对它的属性进行了设定,比如设置Button控件的宽高,字体大小、颜色,以及背景图片等等。

如何应用theme和style

应用theme

应用theme非常简单,只需要在AndroidManifest.xml文件中为你的Application节点添加android:theme属性,值为你定义的theme样式名即可,如下:

<application
    android:theme="@style/AppTheme">
    ...
</application>

应用style

应用style也很简单,只需要在布局文件中为需要添加样式的UI控件的style属性指定你定义的样式即可,如下:

<Button
    android:id="@+id/btn_login"
    style="@style/MyButtonStyle"
    android:text="登录" />

这里我们将MyButton适用于Button控件,用来定义按钮的样式。

示例

示例1:定义自己的主题

  1. 在styles.xml中定义自己的主题
<style name="MyTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

这里我们定义了一个名为MyTheme的主题,继承自Theme.AppCompat.Light.NoActionBar主题,也为该主题定义了三个颜色属性。

  1. 在AndroidManifest.xml中指定该主题
<application
    android:theme="@style/MyTheme">
    ...
</application>

这里我们为Application指定了我们定义的MyTheme主题。

示例2:定义自己的样式

  1. 在styles.xml中定义自己的样式
<style name="MyEditTextStyle" parent="Widget.AppCompat.EditText">
    <item name="android:layout_width">match_parent</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:textSize">16sp</item>
    <item name="android:textColor">@color/colorAccent</item>
    <item name="android:background">@drawable/edt_bg</item>
    <item name="android:padding">10dp</item>
</style>

这里我们定义了一个样式名为MyEditTextStyle,继承自Widget.AppCompat.EditText,也为该样式定义了EditText控件使用的各种属性,包括宽高,字体颜色,背景,之后我们就可以通过MyEditTextStyle来定义EditText。

  1. 在布局文件中使用自己定义的样式
<EditText
    android:id="@+id/et_username"
    style="@style/MyEditTextStyle"
    android:hint="请输入用户名" />

这里我们将MyEditTextStyle样式作用于EditText控件,定义EditText的样式。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Android开发 — UI界面之threme和style - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • 使用JS来动态操作css的几种方法

    在Web开发中,JavaScript可以用来动态操作CSS,从而实现动态效果和交互。以下是几种常见的使用JS来动态操作CSS的方法: 1. 使用style属性 可以使用JavaScript的style属性来直接修改元素的CSS样式。例如: <div id="box" style="width: 100px; height:…

    css 2023年5月18日
    00
  • ASP.NET Core中快速构建PDF文档的步骤分享第2/2页

    ASP.NET Core中快速构建PDF文档的步骤分享第2/2页主要分为以下几个步骤: 第一步:安装NuGet包 在使用ASPOSE.Pdf for .NET生成PDF文档前,需要使用以下命令安装NuGet包: Install-Package Aspose.PDF 第二步:生成PDF文档 在生成PDF文档之前,需要定义一个Document对象、一个页面(也可…

    css 2023年6月10日
    00
  • 新手快速上手webpack4打包工具的使用详解

    新手快速上手webpack4打包工具的使用详解 1. 什么是webpack webpack是一个现代JavaScript应用程序的静态模块打包器。当webpack处理应用程序时,它会递归地构建一个依赖关系图,其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个bundle。 2. 安装webpack 在使用webpack前,我们需要先安装它。使…

    css 2023年6月9日
    00
  • canvas实现图片根据滑块放大缩小效果

    来详细讲解如何使用canvas实现图片根据滑块放大缩小效果。步骤如下: 步骤一:创建canvas元素 首先,我们需要在网页中创建一个canvas元素。可以使用以下代码: <canvas id="canvas"></canvas> 步骤二:获取Canvas 2D上下文 我们需要获取到Canvas 2D上下文,以便在c…

    css 2023年6月10日
    00
  • javascript实现了照片拖拽点击置顶的照片墙代码

    下面详细讲解如何使用 JavaScript 实现照片拖拽点击置顶的照片墙代码。 步骤一:HTML模板和CSS样式的编写 首先,我们需要在 HTML 中创建照片的容器和一个置顶按钮,并为它们添加 CSS 样式。以下是示例代码: <div id="photos-container"> <div class="pho…

    css 2023年6月10日
    00
  • jquery 元素相对定位代码

    jQuery是一款基于JavaScript的快速、简洁的JavaScript库,它封装了许多常见的基础性操作(如DOM操作、事件处理、动画效果等),使用起来更加方便快捷。下面详细讲解和演示如何使用jQuery元素相对定位的代码。 1.概述 在jQuery中,通过设置元素的CSS属性来实现元素相对定位。该定位方式依赖于元素的父级元素,因此需要理解元素嵌套层次关…

    css 2023年6月10日
    00
  • uni-app学习之nvue使用教程

    一、nvue简介及使用场景 nvue是uni-app框架的新型组件化方案,它是一种基于webview(也就是小程序内嵌的webview)的组件开发方案,可以使用vue语法编写,主要用于实现小程序内拥有原生乃至更高的性能与动画效果。 nvue的特点: 相较于weex等其他方案,nvue的兼容性更好,可以兼容所有支持webview的小程序和app平台,如微信小程…

    css 2023年6月10日
    00
  • vue鼠标hover(悬停)改变background-color移入变色问题

    想要实现鼠标hover(悬停)时改变元素的背景颜色,可以使用Vue的绑定事件@mouseover和@mouseout。具体步骤如下: 首先,给需要实现鼠标悬停变色的元素绑定一个v-bind样式,样式名称可以是你自己定义的,例如hoverColor。同时,需要定义两个背景颜色变量,一个代表平时的背景颜色,另一个代表鼠标悬停时的背景颜色。 <templat…

    css 2023年6月9日
    00
合作推广
合作推广
分享本页
返回顶部