2010-06-13 23 views
17

我有一個使用ArrayAdapter填充字符串列表的Android微調器,它運行良好,但是因爲顯示微調器的方式,我遇到了列表項的顯示高度問題。如何管理android微調項目的高度?

乍一看,似乎ArrayAdapter可以使用單個佈局顯示導致我遇到的問題的選項。在微調器中顯示當前項目時(當用戶沒有從列表中選擇新項目時),微調器會填充文本,以便微調器具有合理的點擊大小。然而,當用戶點擊它並提出列表來選擇一個新項目時,列出的項目是小高度方式。如果我使用項目佈局來顯示列表項目的高度,那麼由於它自己填充了列表項目,所以微調器本身變得過於龐大。

關於如何管理這兩個項目顯示模式的高度的任何想法,以便它們有效顯示高度值而不是微調器高度大於列表項高度?

回答

44

我碰到的這個問題我自己前一段時間,並且事實證明,我需要使用的下拉列表,並顯示不同的佈局

我有這樣的代碼:

adapter = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, cGroups, 
       new String[] { 
         "name", "_id" 
       }, new int[] { 
        android.R.id.text1 
       }); 
     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
+2

這很完美。謝謝!只需要清楚setDropDownViewResource方法設置用戶從項目列表中選擇時顯示的項目視圖。 – rushinge 2010-06-13 23:55:45

13

是的,以上答案是正確的。

我花了很長時間才找到這個,因爲它在2.2 Android的sdk示例中是錯誤的。我很難接受這一點。

下面是從 樣品/ Android的12 /微調/ src目錄/ COM /安卓/例子/旋轉/ SpinnerActivity.java一個片段:

 
     this.mAdapter = ArrayAdapter.createFromResource(this, R.array.Planets, 
       android.R.layout.simple_spinner_dropdown_item); 

,同時它應該有android.R.layout.simple_spinner_item有替代和simple_spinner_dropdown_item只應用於下拉項目。否則,微調箭頭將變爲拉伸狀態,並將下拉選擇圓圈畫到顯示器上。

+0

你的帖子已經幫了我很多,它讓我感到困惑。 Pentium10給出的答案仍然在setDropDownViewResource()調用中使用下拉變體,這導致項目的大量填充。只要嘗試在此設置中修改主題中的屬性 - 祝你好運不一致... – 2012-12-06 21:07:33

+0

Pentium10的回答是正確的,就像我說的,我只是對此感到高興。我的評論是關於我認爲應該提及的樣本,因爲我最初沒有發現它的缺陷,這就是我首先尋找修復的原因。 – 2012-12-11 08:09:43

+0

哦,明白了。感謝您的澄清。再次,您的回答讓我走上了正確的軌道,即使我一開始就誤解了背景。 – 2012-12-18 13:24:39