android 参数 attrs.xml,android – 定义自定义attrs

android 参数 attrs.xml,android – 定义自定义attrs传统的方法充满了样板代码和笨拙的资源处理。这就是我制作Spyglass框架的原因。为了演示它是如何工作的,这里有一个示例,展示如何创建一个显示字符串标题的自定义视图。第1步:创建自定义视图类。publicclassCustomViewextendsFrameLayout{privateTextViewtitleView;publicCustomView(Contextcont…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

传统的方法充满了样板代码和笨拙的资源处理。 这就是我制作Spyglass框架的原因。 为了演示它是如何工作的,这里有一个示例,展示如何创建一个显示字符串标题的自定义视图。

第1步:创建自定义视图类。

public class CustomView extends FrameLayout {

private TextView titleView;

public CustomView(Context context) {

super(context);

init(null, 0, 0);

}

public CustomView(Context context, AttributeSet attrs) {

super(context, attrs);

init(attrs, 0, 0);

}

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

super(context, attrs, defStyleAttr);

init(attrs, defStyleAttr, 0);

}

@RequiresApi(21)

public CustomView(

Context context,

AttributeSet attrs,

int defStyleAttr,

int defStyleRes) {

super(context, attrs, defStyleAttr, defStyleRes);

init(attrs, defStyleAttr, defStyleRes);

}

public void setTitle(String title) {

titleView.setText(title);

}

private void init(AttributeSet attrs, int defStyleAttr, int defStyleRes) {

inflate(getContext(), R.layout.custom_view, this);

titleView = findViewById(R.id.title_view);

}

}

步骤2:在values/attrs.xml资源文件中定义字符串属性:

步骤3:将setTitle注释应用于”Hello, World!”方法,以告知Spyglass框架在视图膨胀时将属性值路由到此方法。

@HandlesString(attributeId = R.styleable.CustomView_title)

public void setTitle(String title) {

titleView.setText(title);

}

既然您的类具有Spyglass注释,Spyglass框架将在编译时检测它并自动生成setTitle类。

第4步:在自定义视图的setTitle方法中使用生成的类:

private void init(AttributeSet attrs, int defStyleAttr, int defStyleRes) {

inflate(getContext(), R.layout.custom_view, this);

titleView = findViewById(R.id.title_view);

CustomView_SpyglassCompanion

.builder()

.withTarget(this)

.withContext(getContext())

.withAttributeSet(attrs)

.withDefaultStyleAttribute(defStyleAttr)

.withDefaultStyleResource(defStyleRes)

.build()

.callTargetMethodsNow();

}

而已。 现在,当您从XML实例化类时,Spyglass伴侣会解释属性并进行所需的方法调用。 例如,如果我们膨胀以下布局,则将使用”Hello, World!”作为参数调用setTitle。

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

xmlns:app=”http://schemas.android.com/apk/res-auto”

android:width=”match_parent”

android:height=”match_parent”>

android:width=”match_parent”

android:height=”match_parent”

app:title=”Hello, World!”/>

框架不仅限于字符串资源,还有许多不同的注释用于处理其他资源类型。 如果您的方法具有多个参数,它还具有用于定义默认值和传递占位符值的注释。

有关更多信息和示例,请查看Github仓库。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/183472.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • MySQL配置文件my.ini「建议收藏」

    MySQL配置文件my.ini「建议收藏」my.ini文件位置1、在我们的电脑上面找到mysql的安装路径,点击进去之后可以看到my.ini在mysql安装路径的根目录2、另外一种情况是我们在mysql安装目录找不到,看到了my-default.ini文件或者也没有,这时my.ini在“C:\ProgramData\MySQL\MySQLServerx.x”目录下面,我们首先需要找到ProgramData文件夹,这是一个隐藏文件,需要隐藏文件可见才行,或者可以直接检索我们可以看到在“C:\ProgramData\MySQL\MySQLS

    2022年5月23日
    35
  • 一位女测试工程师的成长

    一位女测试工程师的成长

    2021年8月8日
    45
  • css设置背景图片大小自适应_css设置整个页面背景图片

    css设置背景图片大小自适应_css设置整个页面背景图片background:pink;图片在背景图上面background-image:url(food.jpg);一张图片铺满一行background-repeat:repeat-x;同一张图片多张铺满

    2022年8月5日
    7
  • 安卓Activity跳转的几种方式

    安卓Activity跳转的几种方式本文转载于http://blog.sina.com.cn/s/blog_5140274d0100q4j7.html,本人仅作为学习交流之用,请大家尊重原创。第一种方式,用action来跳转。使用Action跳转,如果有一个程序的AndroidManifest.xml中的某一个Activity的IntentFilter段中定义了包含了相同的Action那么这个Intent就与这个目标Ac…

    2022年5月11日
    47
  • anycast隧道_一种以anycast方式部署的CDN监控可用性的方法与流程

    anycast隧道_一种以anycast方式部署的CDN监控可用性的方法与流程本发明涉及一种CDN节点监控可用性的方法,具体涉及一种以anycast方式部署的CDN监控可用性的方法。背景技术:现有CDN可用性的检测方法,一般通过一些探测点检测目的CDN的可用性,在探测到失败时,认为目的CDN不可用;对于以anycast方式部署的CDN监控,得到的结果是不准确的;因为多个探测点发出的探测数据不一定到达了所有的目的CDN;导致探测数据未到达的CDN实际上没有被监控到。技术实现要…

    2022年5月10日
    39
  • Java连接MySQL mysql-connector-java-bin.jar驱动包的下载与安装

    Java连接MySQL mysql-connector-java-bin.jar驱动包的下载与安装eclipse在连接mysql数据库的时候要通过mysql驱动包进行连接首先进入官网中—-官网地址:https://dev.mysql.com/进入官网中选择DOWNLOADS(下载)2.选择下载中的mysql-connectors3.选择connector/JJ指的是Java4.接下在选择操作系统,此处选择platformindependent(独立于平台)…

    2022年5月21日
    1.1K

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号