※ 引述《LaPass (LaPass)》之銘言:
: 打算讓listview在頁面上只出現7行
: 每行佔頁面的1/7
: 請問該怎麼做?
: 目前自己試過的方法是這樣....
: 用ListActivity時,會用到BaseAdapter這個東西
: 裡面有個getView是給底層取得view用的
: public View getView(int position, View view, ViewGroup parent)
: {
: .....
: }
: 在裡面有產生view的方法,是這樣
: view=adapterLayoutInflater.inflate(R.layout.calender_week_row, null);
: 其中
: LayoutInflater adapterLayoutInflater = LayoutInflater.from(c);
: c是這隻程式的activity
: 我原本想用這種方式,去修改view的高
: ViewGroup.LayoutParams lp =view.getLayoutParams();
: lp.height = 50; //某個計算出來的值
: view.setLayoutParams(lp);
: 用這種方法去改已經生成的view沒問題
: 可是,因為這個listview呼叫getview時
: 還沒被加到頁面上,所以lp會是null
: 自己ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams()也不對
: 會出現ClassCastException
: 我就投降了.....
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.219.167.204
不知是否能夠利用 ViewGroup.OnHierarchyChangeListener
裡面有 onChildViewAdded(View parent, View child)
在這裡頭對child設height
如果不能
那就在這裡頭計算被add的次數
>=7,判斷為ListView裡頭的view都已經layout,然後再...
(是不是7可能要試一下,因為我記得getView跑的次數比child數多)
實際上
我只用過這招幫每個child view加上onTouchListener,沒試過更多了