PreferenceFragmentCompat 除了UI以外的用法闯睹,筆記在此:http://www.reibang.com/p/9b7ea3450f0c
不居中問題:
根據(jù)參考資料,
需要在styles.xml中戏羽,指定theme:
然而無論我加不加這句話
(<item name="preferenceTheme"> @style/PreferenceThemeOverlay.v14.Material</item>
)
,我的界面都是這樣的:(其中標(biāo)題欄和底下的bottombar寫在外層的activity里)
如圖所示楼吃,除了黑灰外始花,preference category 和 switch preference 的顏色是colorAccent
沒有仔細(xì)研究過ui的我感覺這好像已經(jīng)符合material design了妄讯,因?yàn)閱螕舻臅r(shí)候有漂亮的水波紋動(dòng)畫效果。
唯一不滿的是不知道為什么不居中酷宵,而是整體偏右
今天終于知道了答案
在style.xml中亥贸,Ctrl+鼠標(biāo)左鍵點(diǎn)擊剛才設(shè)置的主題,進(jìn)入代碼
長(zhǎng)這樣:
里面沒有內(nèi)容浇垦。
考慮到這一條style加不加效果相同炕置,可能它其實(shí)和默認(rèn)的一樣;
看到上面的沒有版本號(hào)的里面各項(xiàng)item的style最后都有Material一詞男韧,估計(jì)其實(shí)用的就是這個(gè)PreferenceThemOverlay 了
于是我們?cè)匐S便ctrl + 鼠標(biāo)左鍵點(diǎn)進(jìn)去一個(gè):
結(jié)果長(zhǎng)這樣:
再點(diǎn)進(jìn)這個(gè)layout呢:
發(fā)現(xiàn)有一個(gè)iconFrameF犹!會(huì)不會(huì)就是他占著左邊開頭的位置呢此虑!
我們進(jìn)入設(shè)計(jì)視圖:
至此甚纲,此謎已解:
preference fragment里面的條目不居中的原因是,左邊留出了icon的空位朦前,而我們沒有設(shè)置icon的圖標(biāo)介杆,所以這個(gè)空位是空白,看上去就整體偏右了
那么怎么辦呢?
現(xiàn)在先讓我們給每一條preference隨意指定一張圖片為icon試試效果:
效果如圖:
而我們icon大小應(yīng)該是48*48dp韭寸,讓我們選擇一些圖片來試試
加了一些圖標(biāo)感覺不好看春哨,視圖用isIconSpaceReserved 置位false,無效
如下stackoverflow鏈接告訴我們恩伺,這是故意的悲靴,因?yàn)閙aterial design 要求空出這個(gè)icon的位置
https://stackoverflow.com/questions/5765186/how-to-add-icons-to-preference
material design 要求如下:
https://material.io/design/platform-guidance/android-settings.html#placement
這里提供了一個(gè)賞心悅目的小例子:
真是賞心悅目啊。
那么為什么我們做的圖標(biāo)就這么丑呢莫其?因?yàn)樘罅恕D俏覀兌鄍adding一點(diǎn)試試耸三,把padding加大到50%
同時(shí)根據(jù)例子乱陡,icon的顏色是深灰色,比一級(jí)字淺仪壮,比二級(jí)字深
加到50% 美如畫