具有自定义属性的Android自定义视图

具有自定义属性的Android自定义视图,第1张

概述我已经制作了自定义视图,我想为它设置一些自定义属性.我想将另一个视图的id作为属性传递. 自定义视图attrs: <?xml version="1.0" encoding="utf-8"?><resources> <declare-styleable name="IdNumber"> <attr name="firstName" format="integer"/> 我已经制作了自定义视图,我想为它设置一些自定义属性.我想将另一个视图的ID作为属性传递.

自定义视图attrs:

<?xml version="1.0" enCoding="utf-8"?><resources>    <declare-styleable name="IDNumber">        <attr name="firstname" format="integer"/>        <attr name="lastname" format="integer"/>        <attr name="address" format="integer"/>        <attr name="birthDate" format="integer"/>    </declare-styleable></resources>

我使用自定义视图的布局:

<?xml version="1.0" enCoding="utf-8"?><relativeLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"    xmlns:custom="http://schemas.androID.com/apk/res-auto"    androID:layout_wIDth="match_parent"    androID:layout_height="match_parent">    <EditText        androID:ID="@+ID/display_name"        androID:layout_wIDth="wrap_content"        androID:layout_height="wrap_content"        androID:inputType="text"        androID:layout_centerHorizontal="true"        androID:tag="name"        androID:ems="10" />    <EditText        androID:layout_wIDth="wrap_content"        androID:layout_height="wrap_content"        androID:inputType="number"        androID:ems="10"        androID:ID="@+ID/ID_number"        androID:layout_centerHorizontal="true"        androID:layout_below="@ID/display_name"/>    <ge.altasoft.custom_vIEws.IDNumber        androID:ID="@+ID/custom_ID_number"        androID:layout_wIDth="wrap_content"        androID:layout_height="wrap_content"        androID:layout_centerHorizontal="true"        androID:layout_below="@ID/ID_number"        androID:paddingleft="35dip"        custom:firstname="@ID/display_name"/></relativeLayout>

自定义视图类的构造函数,我想获取属性值:

public IDNumber (Context context,AttributeSet attrs) {        super(context,attrs);        initVIEws();        TypedArray a = context.obtainStyledAttributes(attrs,R.styleable.IDNumber);        final int N = a.getIndexCount();        for(int i = 0; i < N; i++){            int attr = a.getIndex(i);            switch(attr){                case R.styleable.IDNumber_firstname:                    int firstnameVIEwID = a.getInteger(attr,-1);                    break;            }        }        a.recycle();    }

问题是int firstnameVIEwID = a.getInteger(attr,-1);只是0,而不是VIEw的ID.

custom:firstname =“@ ID / display_name”<<<这应该是错的,但我不知道它有什么问题.当我为自定义属性分配一些整数值时,它可以工作,但它不适用于ID-s. 感谢您在Advance中提供的帮助.

解决方法 更改您的定义< attr name =“firstname”format =“reference”/>
在你的代码中使用int firstnameVIEwID = a.getResourceID(attr,-1);

希望这有帮助!

总结

以上是内存溢出为你收集整理的具有自定义属性的Android自定义视图全部内容,希望文章能够帮你解决具有自定义属性的Android自定义视图所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1141100.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-31
下一篇2022-05-31

发表评论

登录后才能评论

评论列表(0条)

    保存