2013-07-17 73 views
2

我將listview的stackFromBottom XML屬性設置爲true,以便在活動打開時,listview中的最後一項是可見的而不是頂部項目的最後一項是默認值。Android ListView:將最後一個列表項與屏幕頂部對齊

但是,我想要打開該活動,以便listview中的最後一項與屏幕頂部對齊。換句話說,在最後一個項目下應該有一個佔用剩餘空間的空白空間。

我試圖通過添加一個頁腳視圖列表視圖要做到這一點:

View footer = inflater.inflate(R.layout.empty_view, listview, false); 
ViewGroup.LayoutParams lp = footer.getLayoutParams(); 
lp.height = ???; 
footer.setLayoutParams(lp); 
listview.addFooterView(footer); 

的問題是,我不活動的onCreate功能中知道分配給空白頁腳視圖什麼高度。我需要知道列表視圖中最後一個項目的高度,以決定創建空白頁腳視圖的高度,但最後一個列表視圖項目的高度不是固定數字。

如何獲得最後一個listview項目的高度?或者也許有更好的方法來完成這一切?

+0

空視圖*是否爲*列表視圖行?如果不是,那麼在listview本身下面添加一個空視圖會比較容易,並設置layout_weight,以便擴展到剩下的空間。 – Geobits

+0

空視圖不一定是列表視圖行。在列表視圖下面有一個空視圖的問題是,當我滾動時,這個空的空間將一直存在。我希望能夠向下滾動(查看列表視圖中最後一個項目上方的項目),並讓該空白空間由正在向下滾動屏幕的任何列表視圖項目填充。 – zoso19

回答

0

我剛剛發現這個問題的一個非常簡單的解決方案:只需將您的ListView包裝在FrameLayout中。顯然,對齊的處理方式與其他ViewGroups不同。

這是我的工作代碼:

<FrameLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
     <ListView 
      android:id="@+id/list" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:stackFromBottom="true" /> 
</FrameLayout> 

另一種方法是去除機器人:stackFromBottom並做手動滾動來模擬屬性的行爲。這將爲您節省額外的層,但我不會建議添加額外的複雜性。

相關問題