gpt4 book ai didi

android - 如何允许自定义 View 的 XML 属性由资源 ID 或值指定?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:50:58 26 4
gpt4 key购买 nike

我正在实现自己的自定义 DialogPreference 子类,如下所示:

public class MyCustomPreference extends DialogPreference
{
private static final String androidns = "http://schemas.android.com/apk/res/android";

private String mDialogMsg;

public MyCustomPreference(Context context, AttributeSet attrs)
{
super(context, attrs);

mDialogMsg = attrs.getAttributeValue(androidns, "dialogMessage");

...
}

...
}

如您所见,我获取了 dialogMessage XML 属性并将其保存在成员变量 mDialogMsg 中。

我的问题是:我当前的代码不允许将 dialogMessage XML 属性指定为 XML 中的字符串资源 ID。

换句话说,这是可行的:

android:dialogMessage="Hello world!"

但这不是:

android:dialogMessage="@string/hello_world"

如果我在 XML 中将其指定为资源 ID,资源 id 将保存到 mDialogMsg,而不是字符串资源本身。现在,我知道我可以做到:

context.getString(attrs.getAttributeValue(androidns, "dialogMessage"))

但是用户将无法在 XML 中输入普通字符串(即非资源 ID)。我想让用户选择两者都做。我该怎么做?

最佳答案

int resId = attrs.getAttributeResourceValue(androidns, "dialogMessage", 0);
if(resId != 0){
mDialogMsg = getContext().getResources().getString(resId);
} else{
mDialogMsg = attrs.getAttributeValue(androidns, "dialogMessage");
}

关于android - 如何允许自定义 View 的 XML 属性由资源 ID 或值指定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13618260/

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