gpt4 book ai didi

android - 使用 ObtainStyledAttributes 的 monodroid/xamarin 自定义属性为空

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:53:19 25 4
gpt4 key购买 nike

尝试将自定义属性从父布局传递到子布局。

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


属性.xml:

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

主.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:custom 命名空间。您需要在您已经拥有的字符串的末尾添加您的应用程序命名空间,如下所示:

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 版本 17 以来,可以使用:

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

不必编写整个命名空间。

关于android - 使用 ObtainStyledAttributes 的 monodroid/xamarin 自定义属性为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13766555/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com