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>
答案 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