当前位置: 首页 > 面试题库 >

如何在Android中读取自定义属性

公羊涛
2023-03-14
问题内容

我可以创建自定义属性并将其应用到normal EditTexts,如下所示:

<EditText
     android:id="@+id/field1"
     custom:attr1="whatever"
     (...)
<EditText
     android:id="@+id/field2"
     custom:attr1="whatever2"
     (...)

我的问题:是否可以在不创建扩展类的情况下读取这些自定义属性的值EditText?我的意思是,我想从我的中读取自定义属性Activity,但是到目前为止,我所看到的示例要求我从自定义视图的构造函数中读取值


问题答案:

我的问题:是否可以在不创建扩展EditText的类的情况下读取那些自定义属性的值?

是的,您无需扩展类即可获取这些属性。为此,你可以使用一个特殊Factory的设置LayoutInflater,该Activity将用于解析布局文件。像这样:

super.onCreate(savedInstanceState);
getLayoutInflater().setFactory(new CustomAttrFactory());
setContentView(R.layout.the_layout);

哪里CustomAttrFactory是这样的:

public static class CustomAttrFactory implements Factory {

    @Override
    public View onCreateView(String name, Context context,
            AttributeSet attrs) {
        String attributeValue = attrs
                .getAttributeValue(
                        "http://schemas.android.com/apk/res/com.luksprog.droidproj1",
                        "attrnew");
        Log.e("ZXX", "" + attributeValue);
        // if attributeValue is non null then you know the attribute is
        // present on this view(you can use the name to identify the view,
        // or its id attribute)
        return null;
    }
}

这个想法来自博客文章,您可能需要阅读它以获取更多信息。

另外,根据该自定义属性(或其他属性),您可以仅使用android:tag="whatever"传递其他数据(然后在Activitywith中进行检索view.getTag())。

我建议您不要使用这些自定义属性,并重新考虑当前的方法。



 类似资料:
  • 在我的Android Studio项目中,我在gradle中定义了代理设置。与Git repo同步的属性文件。只要在那里定义了代理密码,我就需要将其移动到本地。属性文件。我想实现这样的smth: 在gradle.properties: 在当地。特性: 我该怎么做?

  • 本文向大家介绍Android如何自定义视图属性,包括了Android如何自定义视图属性的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家介绍了Android自定义视图属性的方法,供大家参考,具体内容如下 1. 自定义一个自己的视图类继承自View 2. 在res/values目录中新建一个attrs.xml文件 一个attr属性,对应了一个视图属性 3.最后看布局文件中如何利用我们创建的自定

  • 我们正在从1.3.0升级Spring引导版本。发布到2.3.12。释放。根据旧版本,yml文件使用以下代码片段读取 在src/main/Resources/config/中配置文件 myconf源中的内容。yml 相应的测试类 更改到新版本后,它会抛出一个错误。 如果我删除属性,spring将如何知道类MyConfigProperties必须读取MyConfigSource。yml 另外,在运行测

  • 我使用JAXB根据一些XSD模式生成java类。对于以下元素: <代码> jaxb生成以下代码: 问题是我们需要使用一些依赖于getter/setter方法命名约定的专有XML工具,例如,对于字段REC_LOC他们希望使用名为getRecLoc(String value)和setRecLoc()的方法,而不是getRECLOC()。 有没有办法自定义jaxb生成的方法名?

  • 问题内容: 我正在使用JAXB来基于某些XSD架构生成Java类。对于诸如以下的元素: jaxb生成以下代码: 问题是我们需要使用一些专有的XML工具,这些工具依赖于getter / setter方法的命名约定。例如,对于字段REC_LOC,他们希望使用名为getRecLoc(String value)和setRecLoc()的方法,而不是getRECLOC()。 有什么方法可以自定义jaxb生成

  • 问题内容: 我正在尝试从我的自定义指令中获取一个 评估的 属性,但是我找不到正确的方法。 我已经创建了这个jsFiddle来详细说明。 我想念什么? 问题答案: 注意:我会找到更好的解决方案来更新此答案。 只要它们仍然相关,我也会保留旧答案以供将来参考。最新最好的答案是第一位的。 更好的答案: angularjs中的指令功能非常强大,但是要花些时间来了解它们背​​后的进程。 创建指令时,angul