android – monodroidxamarin自定义属性使用ObtainStyledAttributes为空

android – monodroidxamarin自定义属性使用ObtainStyledAttributes为空,第1张

概述尝试将自定义属性从父布局传递到子布局. 从ObtainStyledAttributes()返回的TypedArray似乎没有我创建的自定义属性的相应自定义值,尽管我可以将它们的ID映射到Resource.designer中的值. Attr.xml: <resources><declare-styleable name="HeaderView"> <attr name="bgcolor" 尝试将自定义属性从父布局传递到子布局.

从ObtainStyledAttributes()返回的TypedArray似乎没有我创建的自定义属性的相应自定义值,尽管我可以将它们的ID映射到Resource.designer中的值.

Attr.xml:

<resources><declare-styleable name="headerVIEw">    <attr name="bgcolor" format="color" />    <attr name="testing" format="string" /></declare-styleable>

Main.xaml:

<relativeLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"xmlns:custom="http://schemas.androID.com/apk/res">    <linearLayout        androID:orIEntation="vertical"        androID:layout_wIDth="fill_parent"        androID:layout_height="fill_parent">        <vIEws.headerVIEw            androID:ID="@+ID/hdrWatchList"            androID:layout_wIDth="fill_parent"            androID:layout_height="20.0dp"            custom:bgcolor="@color/blue"            custom:testing="testing text buddy" />

查看课程:

public headerVIEw (Context context,IAttributeSet attrs) :        base (context,attrs)    {        int[] styleAttrs = Resource.Styleable.headerVIEw;        TypedArray a = context.ObtainStyledAttributes(attrs,styleAttrs);        string  sID = a.GetString(Resource.Styleable.headerVIEw_testing);        int  ID = a.Getcolor(Resource.Styleable.headerVIEw_bgcolor,555);        Log.Info( "testing","resource sID : " + sID); // RETURNS ''        Log.Info( "testing","resource ID : " + ID); // RETURNS DEF 555
解决方法 我认为问题在于您如何指定xmlns:自定义命名空间.您需要在已有的字符串末尾添加应用程序命名空间,以便:
xmlns:custom="http://schemas.androID.com/apk/res/my.awesome.namespace"

您还需要为AndroID项目定义AndroIDManifest.xml,您已在其中定义了相同的命名空间.

线条:

int[] styleAttrs = Resource.Styleable.headerVIEw;TypedArray a = context.ObtainStyledAttributes(attrs,styleAttrs);

看起来有点奇怪,我会写:

var a = context.ObtainStyledAttributes(attrs,Resource.Styleable.headerVIEw);

特别是如果你以后不使用styleAttrs.

编辑:自AndroID SDK rev 17以来,可以使用:

xmlns:custom="http://schemas.androID.com/apk/res-auto"

而不是必须编写整个命名空间.

总结

以上是内存溢出为你收集整理的android – monodroid / xamarin自定义属性使用ObtainStyledAttributes为空全部内容,希望文章能够帮你解决android – monodroid / xamarin自定义属性使用ObtainStyledAttributes为空所遇到的程序开发问题。

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

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

原文地址: http://outofmemory.cn/web/1138511.html

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

发表评论

登录后才能评论

评论列表(0条)

保存