Android自定义View之不得不知道的文件attrs.xml(自定义属性)

简介: 本文详细介绍了如何通过自定义 `attrs.xml` 文件实现 Android 自定义 View 的属性配置。以一个包含 TextView 和 ImageView 的 DemoView 为例,讲解了如何使用自定义属性动态改变文字内容和控制图片显示隐藏。同时,通过设置布尔值和点击事件,实现了图片状态的切换功能。代码中展示了如何在构造函数中解析自定义属性,并通过方法 `setSetting0n` 和 `setbackeguang` 实现功能逻辑的优化与封装。此示例帮助开发者更好地理解自定义 View 的开发流程与 attrs.xml 的实际应用。

系列文章目录

Android自定义View之不得不知道的文件attrs.xml(自定义属性)


先介绍一下Demoview:第一张图红框内是后续的代码

布局文件demoview.xml如下;里面放了一个Textview和ImageView。

attrs.xml文件

这个时候如果在Activity中运用的话,就是一个死的view,那么有没有什么办法,能改变里面的东西呢(改变文字&&设置ImageView是否显示)
这里就不得不提到文章标题中的attrs.xml文件了:如下图

写好后是当然是运用了(其中clickable="true"是设置该控件可以点击,不设置点击变色的背景无效),图片中打错个字,,,,懒得改了

其中demo_style如下:一般都是放的.9图片,为了方便就放个颜色了

最后当然是要将自定义的属性实现其功能了(回到第一步中)

这两句就是取得你在运用中输入的东西了
其中:为了使title相当于TextView中的text:mtv.setText(),将获取的值放入就行了。

那么,那个boolean的值是用来干嘛的呢:控制图片是否显示--> miv.setVisibility(b ? VISIBLE : GONE);如果b为true则显示,为false则不显示。(拓展:了解一下VISIBLE :,GONE,INVISIBLE);

好了现在已经完成了这两个功能了,现在来提一下,点击更换图片

最后在Activity中调用:

DemoView.java代码如下:

public class DeomView extends RelativeLayout {
    private ImageView miv;
    private TextView mtv;
    private boolean yfisshow;

    public DeomView(Context context) {
        this(context, null);
    }

    public DeomView(Context context, AttributeSet attrs) {
        this(context, attrs, 0);

    }

    public DeomView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        String title = attrs.getAttributeValue("http://schemas.android.com/apk/res-auto", "title");
        boolean b = attrs.getAttributeBooleanValue("http://schemas.android.com/apk/res-auto", "isshow", true);
        View view = View.inflate(context, R.layout.demoview, null);
        addView(view);
        mtv= (TextView) view.findViewById(R.id.tv_togle);
        miv = (ImageView) view.findViewById(R.id.iv_togle);
        miv.setVisibility(b ? VISIBLE : GONE);
        mtv.setText(title);

    }

    //改变状态
    public void setSetting0n(boolean isshow) {
        yfisshow = isshow;
        miv.setImageResource(isshow ? R.mipmap.on : R.mipmap.off);
    }
    //记录状态
    public boolean issetting() {
        return yfisshow;
    }
    public void setbackeguang() {
        //第一次优化
//        if (issetting()){
//            setSetting0n(false);
//        }else{
//           setSetting0n(true);
//        }
        //第二次优化
//          if (yfisshow){
//              setSetting0n(false);
//          }else{
//              setSetting0n(true);
//          }
        //第三次优化
//        if (yfisshow){
//            setSetting0n(!yfisshow);
//        }else{
//            setSetting0n(!yfisshow);
//        }
        setSetting0n(!yfisshow);
    }
}
相关文章
|
XML 前端开发 Java
讲解SSM的xml文件
本文详细介绍了SSM框架中的xml配置文件,包括springMVC.xml和applicationContext.xml,涉及组件扫描、数据源配置、事务管理、MyBatis集成以及Spring MVC的视图解析器配置。
321 1
|
12月前
|
XML JavaScript Android开发
【Android】网络技术知识总结之WebView,HttpURLConnection,OKHttp,XML的pull解析方式
本文总结了Android中几种常用的网络技术,包括WebView、HttpURLConnection、OKHttp和XML的Pull解析方式。每种技术都有其独特的特点和适用场景。理解并熟练运用这些技术,可以帮助开发者构建高效、可靠的网络应用程序。通过示例代码和详细解释,本文为开发者提供了实用的参考和指导。
447 15
|
Java Maven
maven项目的pom.xml文件常用标签使用介绍
第四届人文,智慧教育与服务管理国际学术会议(HWESM 2025) 2025 4th International Conference on Humanities, Wisdom Education and Service Management
1165 8
|
XML JavaScript Java
java与XML文件的读写
java与XML文件的读写
183 3
|
5月前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
753 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
5月前
|
移动开发 JavaScript 应用服务中间件
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
646 5
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
5月前
|
移动开发 Rust JavaScript
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
925 4
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
6月前
|
开发工具 Android开发
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
696 11
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
|
5月前
|
移动开发 Android开发
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
273 0