2012-05-25 87 views
9

有很多方法可以讓ListViews具有優雅的外觀,但所有這些方法都需要模擬適配器或編寫其他代碼。隨着Android 4.0的發佈,不幸的事情不得不改變。谷歌拋光了他們的全息主題,並賦予它全新的外觀。現在鼓勵所有開發人員使用它,以使所有應用程序看起來都一樣。Android ListView主題

這就是問題所在。谷歌推出4.0,但仍有人使用舊版Android。我們不能離開我們之前的自定義應用程序主題並使用Holo,因爲它會破壞舊設備用戶的視覺體驗。我們不能強迫4.0用戶使用Holo,因爲說實話 - 這還不完美。

目標是使用內建主題系統併爲Holo準備一些替代品,這些替代品在所有設備上看起來都很棒。然後,我們可以只用setTheme()在Holo和主題之間進行切換,而不會出現其他問題。不幸的是並不那麼簡單。我們僅限於現有主題系統的功能,有些事情很難做到。我的問題來了。

把我提到的一切都考慮進去,我們如何控制ListView的外觀?我無法弄清楚,如何:

  • 創建圓角列表,並確保選擇背景不選擇第一個/最後一個元素時破壞它
  • 創建圓角不是列表但部分由標題分隔,如下所示:enter image description here

解決方案應該會影響PreferenceActivity創建的ListView,而不需要任何額外的代碼行。一切都應該包含在主題:

<theme name="SampleTheme" parent="android:Theme"> 
    ... 
</theme> 

我懇請不要發佈那些不使用樣式&主題的解決方案。他們可以很容易地發現在另一個問題,這裏堆棧溢出。

在此先感謝。

+1

可能想檢查一下:http://android-ui-utils.googlecode.com/hg/asset-studio/dist/index。 html –

+0

@JaredRummler此鏈接已損壞。 – Zety

+0

@WalR我*認爲*這是同樣的事情:http://romannurik.github.io/AndroidAssetStudio/ –

回答

1

我可以看到兩種方法來解決這個問題。

其中之一就是爲您的列表視圖指定背景,而後者又是一個帶有圓角或您指定的xml形狀(帶有圓角)的9貼圖。這會讓listview行選擇符的副作用出現在你指定的背景上,因此會影響效果。儘管如此,這是相當直接的。

第二種方法是總是將頁眉和頁腳添加到您的列表視圖中,這些列表視圖的背景是在頂部(和底部)具有圓角的選擇器。如果您真的想要,也可以指定這些樣式。 對不起這最後的評論,但我不得不說。請不要試圖讓你的應用看起來像iPhone應用:)