2014-05-14 38 views
3

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> 

回答

6

AFAIK,目前attr s沒有任何屬性來標記它們是強制性的。 ("layout_width"等等是非常常見的錯誤,檢查那些被接線到SDK)

你可以,但是,從您的自定義View拋出RuntimeException如果屬性丟失(這可以通過調用TypedArray.hasValue()確定) - - TypedArraygetLayoutDimension()方法中做到了這一點。

如果你編譯的應用程序缺少"layout_width"使用命令行工具(即沒有Eclipse或想法來檢測缺失的atrribute並阻止編譯),你會得到這樣的行爲:你運行應用程序,它崩潰一個RuntimeException說你錯過了這個屬性。

+0

工程就像一個魅力!謝謝! –

0

嘗試看看這個link。有關於如何定義「wrap_content」和「match_parent」的信息。也許這會有所幫助。