如何實現可動態調整隱藏head

2021-06-22 11:26:53 字數 1649 閱讀 3379

如何實現可動態調整隱藏header的listview

雷鬼 需求:根據某種需要,可能需要動態調整listview的頁首頁尾,譬如將header作為顯示板使用。

難點:listview.addheaderview()方法必須在setadapter()方法前呼叫,否則就會拋異常。至於為什麼會拋異常,檢視下listview的源**即可發現。因此,在設定headerview之後又想將headerview移除或者隱藏,則需要繞很大的彎子:將adapter儲存起來-移除headerview-(或者更換headerview)-再將adapter設定上去。

隱藏headerview思路:使用view.gone屬性進行隱藏

嘗試1.itemview結構如下:

android:id="@+id/item_root"

android:layout_width="fill_parent"

android:layout_height="50dip"

android:orientation="vertical" >

android:id="@+id/tv_1"

/>

android:id="@+id/tv_2"

/>

此時,有如下邏輯:

listview listview = ***x;

listview.addhearderview(item_root);

listview.setadapter(adapter);

adapter.add(***xx);新增資料

item_root.setvisibility(view.gone);

按道理,最後一句應該可以起到隱藏headerview的目的,但實際效果(魅族mx上測試發現),item_root的地方的確沒有控制項了,但item_root占用的50dip高度還在,即原來headerview的地方變成了一片空白區域!和view.invisibile效果一樣了,汗死!

繼續嘗試如下,修改itemview的結構:

android:id="@+id/item_root"

android:layout_width="fill_parent"

android:layout_height="50dip"

android:orientation="vertical" >

android:id="@+id/item_container"

android:id="@+id/tv_1"

/>

android:id="@+id/tv_2"

/>

此結構較之前的結構增加了乙個多餘的layout(

item_container

)來囊括item內部控制項。此時,如果在

item_container

.setvisibility(view.gone)則可以完美實現隱藏headerview的目的!

結論:view.gone屬性貌似不作用在根layout上。

新的問題:

如果在item_root上使用了shape背景,且此背景存在minsize,那麼此方法又失效了。。。

規避處理:如果的確必須要在headerview上新增背景background的話,那麼請將background設定在

item_container上吧,不要設定在

item_root上,如此就可以規避新的問題了。

陣列實現下壓棧(可動態調整陣列大小)

public class resizingarraystackimplements iterable 獲取棧大小 return public int size 調整棧的大小 param max private void resize int max override public iteratori...

QML如何實現視窗縮放隱藏

上面實現了視窗以矩形的方式進行縮放隱藏和顯示。該功能主要使用了qml動畫中的numberanimation來實現,下面簡單介紹一下numberanimation。numberanimation顧名思義就是數字動畫,可以改變型別為數值的屬性,從而產生一系列的動畫,例如,width,height,rad...

低成本FPGA中實現動態相位調整

在fpga中,動態相位調整 dpa 主要是實現lvds介面接收時對時鐘和資料通道的相位補償,以達到正確接收的目的。altera的高階fpga,如stratix r 系列中自帶有dpa電路,但低端的fpga,如cyclone r 系列中是沒有的。下面介紹如何在低端fpga中實現這個dpa的功能。實現架...