android:gravity="center_vertical"與android:layout_centerVertical="true"的區(qū)別

這特么是一個(gè)坑。
一個(gè)ImageView放在RelativeLayout中,給RelativeLayout設(shè)置android:gravity="center_vertical發(fā)現(xiàn)并沒(méi)有垂直居中,歪了一點(diǎn)點(diǎn)。而直接給ImageView設(shè)置android:layout_centerVertical="true"就正好。

用ImageView的getTop()和getBottom()探索過(guò)程不提了,直接說(shuō)結(jié)果:
首先我ImageView的資源文件高度為28px;
當(dāng)沒(méi)有設(shè)置drawable-hdpi,圖片資源只放在了drawable-xhdpi里,而設(shè)備是240dpi的時(shí)候,hdpi里找不到,就去xhdpi里找了,找到后顯示在屏幕上會(huì)縮放0.75倍,變成21px;區(qū)別就在這兒了。

比如RelativeLayout的高度是80px;
android:layout_centerVertical="true"是設(shè)置給ImageView的,會(huì)測(cè)量好ImageView的實(shí)際高度得到21px,然后垂直居中就是距離頂部(80-21)/2=29。

android:gravity="center_vertical是設(shè)置給RelativeLayout的,他還是按照源資源大小給你計(jì)算(80-28)/2 = 26;距離父控件的距離是26px。

就是這3個(gè)像素讓我看出來(lái)“歪了”。

解決辦法有2個(gè):
1、現(xiàn)在mdpi的設(shè)備不多了。。但hdpi還是有一些的,該為他們弄一套圖還是專門弄一套圖吧。
2、LinearLayout的android:gravity="center_vertical是準(zhǔn)的,RelativeLayout既然不準(zhǔn),那就還是用android:layout_centerVertical="true"靠譜。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,021評(píng)論 25 709
  • RelativeLayout 第一類:屬性值為true可false android:layout_centerHr...
    兀兀沙彌閱讀 3,132評(píng)論 0 15
  • 在一個(gè)陌生而又熟悉的城市待久了,慢慢的就會(huì)習(xí)得這個(gè)城市最原始的風(fēng)貌,但對(duì)于流浪者來(lái)說(shuō),自從離開(kāi)家的那一刻,其它任何...
    豆三葉閱讀 432評(píng)論 1 4
  • 第一章:序幕 在寫這個(gè)故事之前,我有一種不寒而栗的感覺(jué),因?yàn)榛貞浧鹉羌虑?,所有人都像被施了魔咒一樣,隨之而來(lái)的是...
    迦夜詩(shī)人閱讀 446評(píng)論 0 0
  • 一般情況下,如果是像教室那樣的辦公室,人們總傾向于坐在后面,越后面越好,一個(gè)重要的原因是,坐前面總會(huì)有被監(jiān)視的感覺(jué)...
    管理顧問(wèn)王榮增閱讀 314評(píng)論 0 2

友情鏈接更多精彩內(nèi)容