本文章主要介绍Android系统中,自定义View的开发。

通常用于展示特定的样式,或抽象控件,方便复用。

1.自定义控件的传参

定义declare-styleable,方便从XML布局文件中传入类内部。

文件目录:

res\values\atts.xml

文件内容:

2.自定义类

以EditText为例,展示获取XML中设置的变量

package com.lizheblogs.view;

import android.content.Context;

import android.content.res.Resources;

import android.content.res.TypedArray;

import android.util.AttributeSet;

import androidx.appcompat.widget.AppCompatEditText;

import com.teenysoft.jdxs.R;

public class SupEditText extends AppCompatEditText {

private boolean isFilters = true;

private float emptyTextSize = 12;

private float textSize = 14;

private int errorHintColor;

private float errorTextSize = 14;

private String errorText1;

private String errorText2;

public SupEditText(Context context) {

super(context);

init(context, null);

}

public SupEditText(Context context, AttributeSet attrs) {

super(context, attrs);

init(context, attrs);

}

public SupEditText(Context context, AttributeSet attrs, int defStyleAttr) {

super(context, attrs, defStyleAttr);

init(context, attrs);

}

private void init(Context context, AttributeSet attrs) {

Resources resources = context.getResources();

errorHintColor = resources.getColor(R.color.edit_text_error_text);

if (attrs != null) {

//从xml的属性中获取到字体颜色与string

TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.SupEditText);

isFilters = ta.getBoolean(R.styleable.SupEditText_isFilters, true);

emptyTextSize = ta.getDimension(R.styleable.SupEditText_emptyTextSize, 12);

textSize = ta.getDimension(R.styleable.SupEditText_textSize, 14);

errorHintColor = ta.getColor(R.styleable.SupEditText_errorHintColor,

errorHintColor);

errorTextSize = ta.getDimension(R.styleable.SupEditText_errorTextSize, 14);

errorText1 = ta.getString(R.styleable.SupEditText_errorText1);

errorText2 = ta.getString(R.styleable.SupEditText_errorText2);

ta.recycle();

}

}

}

这样就可以通过XML中的设置,来改变控件的样式。

3.XML布局

在XML布局中设置变量的值。

以EditText为例,展示XML中设置变量

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:ts="http://schemas.android.com/apk/res-auto"

android:id="@+id/userNameET"

android:layout_width="match_parent"

android:layout_height="match_parent"

ts:emptyTextSize="12sp"

ts:errorHintColor="@color/edit_text_error_text"

ts:errorText1="@string/input_user_name_please"

ts:errorTextSize="14sp"

ts:isFilters="true"

ts:textSize="14sp" />

ts为空间名,可随意。

大功告成!

Android自定义华为睡眠,Android自定义View相关推荐

  1. Android自定义华为睡眠,Android 模仿华为健康自定义 计步View

    通过一个简单的自定义的View,模仿华为健康里面消耗热量和计步的圆弧View,来深入的理解RectF以及 canvas的drawArc方法. 华为健康的View是这样的: 最近写了一些自定义的view ...

  2. 华为mate9 android p,华为Mate10 Android P运行crash

    华为Mate10 Android P未发布的系统, patch合成成功,但app重启后运行crash,堆栈在最下面 异常类型:app运行时异常 手机型号:华为Mate 10 手机系统版本:Androi ...

  3. android小球移动代码,Android自定义圆形View实现小球跟随手指移动效果

    本文实例为大家分享了Android实现小球跟随手指移动效果的具体代码,供大家参考,具体内容如下 一. 需求功能 手指在屏幕上滑动,红色的小球始终跟随手指移动. 实现的思路: 1)自定义View,在on ...

  4. android 画布实现签名,Android 自定义View手写签名并保存图片

    1.自定义View--支撑设置画笔色彩,画笔宽度,画板色彩,铲除画板,查看是否有签名,保存画板图片(仿制粘贴可直接使用) /***CreatedbyYyyyQon2020/3/5. *电子签名*/pu ...

  5. android canvas绘制圆角_Android自定义View撸一个渐变的温度指示器(TmepView)

    秦子帅明确目标,每天进步一点点..... 作者 |  andy 地址 |  blog.csdn.net/Andy_l1/article/details/82910061 1.概述 自定义View对需要 ...

  6. 我的Android进阶之旅------Android自定义View来实现解析lrc歌词并同步滚动、上下拖动、缩放歌词的功能...

    前言 一LRC歌词文件简介 1什么是LRC歌词文件 2LRC歌词文件的格式 LRC歌词文件的标签类型 1标识标签 2时间标签 二解析LRC歌词 1读取出歌词文件 2解析得到的歌词内容 1表示每行歌词内 ...

  7. Android中实现Bitmap在自定义View中的放大与拖动

    一基本实现思路: 基于View类实现自定义View –MyImageView类.在使用View的Activity类中完成OnTouchListener接口,实现对MotionEvent事件的监听与处理 ...

  8. Android之在Layout中自定义View

    在Layout中自定义View 经常会看到在XML文件中调用别人的View就可以显示出各种奇妙的页面 简单的学习了一下,下面说一下如何自定义一个View, 并设置背景色 // 第一步,创建一个继承自V ...

  9. android 单选框 icon,Android中的普通对话框、单选对话框、多选对话框、带Icon的对话框、以及自定义Adapter和自定义View对话框详解...

    标签: 对话框就是一个AlertDialog,但是一个简单的AlertDialog,我们却可以将它玩出许多花样来,下面我们就来一起总结一下AlertDialog的用法.看看各位童鞋在平时的工作中否都用 ...

  10. android自定义控件中文乱码,Android笔记--自定义View之组合控件

    Android-自定义View 分享是最好的记忆-- 如需转发请注明出处 [强调]:共同学习 共同进步 不喜勿喷 内容简介 前言 实现 总结 1. 前言 这次更新有2个目的 1. 复用控件,而不是每次 ...

最新文章

  1. Java项目:酒店管理系统(java+Springboot+Mybatis+Beetl+Layui)
  2. 2019年汽车行业深度投资研究
  3. AppStore IPv6-only审核被拒原因分析及解决方案-b
  4. 灰色简约三级CSS下拉菜单代码
  5. c++学习笔记之类的应用
  6. pat天梯赛L1-052. 2018我们要赢
  7. C++ 字符串指针和字符串指针数组详解
  8. 【飞秋】Asp.net MVC2 model验证 看似美好,实则让人失望。
  9. 爬虫-代理的质量控制
  10. 计算机二级科目有ps吗,计算机二级有ps吗
  11. cassandra vs mongo (1)存储引擎
  12. python爬取妹子图(复制即可用)
  13. 关于数据清洗的步骤及方法的理解
  14. Bing搜索没法用的解决办法(附Google和edge的详细解决步骤)
  15. 计算机网络网关设置路由器,天翼网关(宽带)怎么连接路由器?
  16. git操作与vscode,码市的结合
  17. 全球域名商域名增量Top15:51DNS排名降至第十二
  18. 计算机网络技术用苹果电脑,苹果电脑的硬盘能接到PC机上用吗?能用硬盘 – 手机爱问...
  19. HDU-6578 Blank(DP)2019暑假杭电多校第一场
  20. Java工具类cntool

热门文章

  1. 北辰创业笔记:百度引流推广有用吗?百度引流最有效的方法
  2. netbeans php下载,Netbeans7下载和安装
  3. [Go] 理解计算机负数的表示以及整数范围
  4. Helper辅助类设计技巧
  5. Excel表格中带公式的数值如何复制?
  6. 用Python走入史学经典《三国演义》中的社交网络
  7. StringBuilder和StringBuffer的效率比较
  8. [编程题]山寨金闪闪 (面试题)
  9. Winodws update auto update client(wuauclt)
  10. 4、Android下实现Google街景