解決安卓中XML文件聲明高度 寬度無效的問題

搬磚的時(shí)候,需要在popupwindow里嵌套一個(gè)ListView用來展示動(dòng)態(tài)菜單。重寫了ListView的高度為所有的Item高度之和。
item:

    <?xml version="1.0" encoding="utf-8"?>
    <Button xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/button"
        android:layout_width="match_parent"
        android:layout_height="45dp"
        android:layout_marginTop="10dp"
        style="@null"
        android:maxHeight="45dp"
        android:background="@drawable/box"
        android:text="取消"
        android:textColor="#1a99f3"
        android:textSize="15sp" />

這里可以看到,我聲明了高度為45dp。但是添加到ListView的時(shí)候,卻發(fā)現(xiàn)在手機(jī)上顯示的高度明顯大于45dp。


image

根據(jù)圖片我們可以看到,下面三個(gè)按鈕顯示的高度跟第一個(gè)顯示的高度,差了差不多兩倍多的高度。

原來原因在這里:

我們?cè)谑鞘褂?/p>

inflater.inflate(R.layout.item_popumenu, root, attachToRoot);

來添加到父布局中,但是對(duì)于這幾個(gè)參數(shù)卻沒有去研究。以下是我在網(wǎng)上找到的:

1. 如果root為null,attachToRoot將失去作用,設(shè)置任何值都沒有意義。
2. 如果root不為null,attachToRoot設(shè)為true,則會(huì)給加載的布局文件的指定一個(gè)父布局,即root。
3. 如果root不為null,attachToRoot設(shè)為false,則會(huì)將布局文件最外層的所有l(wèi)ayout屬性進(jìn)行設(shè)置,當(dāng)該view被添加到父view當(dāng)中時(shí),這些layout屬性會(huì)自動(dòng)生效。
4. 在不設(shè)置attachToRoot參數(shù)的情況下,如果root不為null,attachToRoot參數(shù)默認(rèn)為true。

其實(shí)也看得我云里霧里,但是大概知道解決的方法了。

View view = inflater.inflate(R.layout.item_popumenu, parent, false);

這里的parent一定要填它的父布局,第三個(gè)參數(shù)設(shè)置為false就好了。

?著作權(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,355評(píng)論 25 708
  • ¥開啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個(gè)線程,因...
    小菜c閱讀 7,390評(píng)論 0 17
  • 一、適用場(chǎng)景 ListViewListview是一個(gè)很重要的組件,它以列表的形式根據(jù)數(shù)據(jù)的長(zhǎng)自適應(yīng)展示具體內(nèi)容,用...
    Geeks_Liu閱讀 11,024評(píng)論 1 28
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 14,200評(píng)論 1 92
  • “親愛的,今天又是好天氣呢,”芳羅一邊收拾桌子,一邊說,:“恩,今天我也很開心,因?yàn)槔习逭f要給我升職了,會(huì)加薪的呢...
    叢銘閱讀 216評(píng)論 2 4

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