2015-12-02 53 views
0

對於一個小工具,我必須編寫一個Android應用程序。對可移植性沒有要求,僅當應用程序僅在Android版本6或更高版本上運行時就足夠了。樣式CardView組

我很樂意將對話框元素分組到CardViews中,我很想有一些合理的佈局(間距,顏色等)。有沒有辦法使用我可以使用的主題,標準佈局,樣式等,而不需要應用「android:padding」,「card_view:cardElevation」等。屬性到每個CardView?

如果不可能使用一些已經存在的默認值,我可以使用樣式。當我使用樣式(遵循Google的「樣式和主題」API指南)時,我將CardView定義中的某些屬性從佈局xml移動到樣式xml時出現錯誤消息。對於我轉移到以「android:」開頭的樣式xml的屬性,沒有錯誤。對於其他屬性,我會找到一個找不到與給定名稱錯誤匹配的資源。

<style name="CardGroups"> 
    <item name="xmlns:card_view">"http://schemas.android.com/apk/res-auto"</item> 
    <item name="card_view:cardElevation">3dp</item> 
    <item name="android:layout_margin">3dp</item> 
    <item name="android:layout_width">match_parent</item> 
    <item name="android:layout_height">wrap_content</item> 
</style> 

結果:Error:(20, 5) No resource found that matches the given name: attr 'card_view:cardElevation'.

回答

1

你是正確的,風格是去提供一組通用的屬性給多個視圖的方式。

您不應該在樣式定義中使用自定義名稱空間。對於由庫提供的自定義屬性(如cardElevation),您只是不提供名稱空間。

因此你的風格應該是這樣的:

<style name="CardGroups"> 
    <item name="cardElevation">3dp</item> 
    <item name="android:layout_margin">3dp</item> 
    <item name="android:layout_width">match_parent</item> 
    <item name="android:layout_height">wrap_content</item> 
</style> 
+0

謝謝坦尼斯!我猜「xmlns:card_view」是特別的東西,我可以忽略它嗎? –

+1

這是命名空間聲明 - 既然你沒有使用命名空間,你也不需要聲明。 –