必需的自定义属

时间:2014-05-14 20:17:59

标签: android

android:layout_width和android:layout_height是必需的属性,即如果你没有为布局指定它们,Android Studio告诉我"元素x没有必需属性android:layout_height。 "

我在自己的课程中定义了一些自定义属性,并且我要求任何在xml中使用它们的人都指定值,就像他们必须指定layout_width和layout_height一样。

我该怎么做?我可以在attrs.xml中添加一些内容:

<declare-styleable name="MyStyleable">
   <attr name="myAttribute" format="float"/>
</declare-styleable>

或者也许在这里的style.xml中:

<style name="MyStyle">
    <item name="myAttribute">3</item>
</style>

3 个答案:

答案 0 :(得分:11)

AFAIK,目前attr没有任何属性可以强制标记。 ("layout_width"等是非常常见的错误,检查这些错误是连接到SDK)

如果缺少某个属性(您可以通过调用RuntimeException确定),您可以从自定义View投出TypedArray.hasValue() - TypedArray这样做在getLayoutDimension()方法中。

如果您使用命令行工具编译了某个错过了"layout_width"的应用程序(即没有Eclipse或Idea来检测缺少的属性并阻止您编译),这正是您所获得的行为:你运行应用程序,它会立即崩溃,RuntimeException说你错过了该属性。

答案 1 :(得分:0)

尝试查看此link。有关于&#34; wrap_content&#34;的信息。和&#34; match_parent&#34;定义。也许这会有所帮助。

答案 2 :(得分:0)

使用Android KTX,有一些扩展功能提供getFloatOrThrow()和其他类似方法。

检出它们here