2012-05-16 77 views
0

我想在PreferenceActivity上顯示一個類似於android操作系統wifi設置對於網絡列表(例如here,位於圖像底部區域)的listView。然而,這樣的事情不是可用的,所以我創建了一個擴展Preference的新類,並且我在onCreateView中返回的只是一個ListView實例。android-在PreferenceActivity中顯示listView

它的工作,但listView有一個大約一個單一的項目不變的大小,不管我對它的layoutParams做什麼,不管我做什麼適配器。即使我將適配器設置在onCreateView中,它也具有完全相同的大小。

不僅如此,但listView不能滾動,即使它很清楚它有多個項目。

我當然想要使用與所有偏好相同的文字大小標準,以給出本地的感覺。

任何人都可以請告訴我可以做些什麼才能使它工作良好?

順便說一句,該應用程序應該適用於Android API 10+(最低10)。

回答

2

如果您要採用相同的外觀/行爲,您應該使用簡單的PreferenceActivity實現,並將新的preference items從代碼(最終使用自定義渲染器)動態添加到「列表」中。

基本實現這樣的顯示的是:

/** 
* This variable stands for the items with which you want to populate the list 
*/ 
final HashMap<String, String> networks = new HashMap<String, String>(); 

final PreferenceCategory cat = new PreferenceCategory(getApplicationContext()); 
cat.setTitle(R.string.wifinetworks); // holding "Wi-fi networks" 
for (final String networkTitle : networks.keySet()) 
{ 
    final Preference pref = new Preference(getApplicationContext()); 
    pref.setTitle(networkTitle); 
    pref.setSummary(networks.get(networkTitle)); 
    cat.addPreference(pref); 
} 

編輯:要添加自定義組件到現有PreferenceActivity,你應該給一個嘗試到addContentView方法。從內onCreate

final LayoutParams params = new LayoutParams(LayoutParams.FILL_PARENT, 
     LayoutParams.WRAP_CONTENT); 
addContentView(buttonBar, params); 
+0

所以你的意思是我不應該使用一個ListView可言的,而不是簡單地甚至在運行時添加和刪除的項目?滾動功能如何?看起來,當我添加一個scrollView,「列表」的大小縮小,並保持相同的大小...滾動也不起作用 –

+0

'PreferenceActivity'的屏幕確實已經滾動功能,所以你不需要添加另一個。 – rekaszeru

+0

是否有可能在正常活動中使用preferenceActivity上的默認樣式?我需要有本土的感覺,但有些事情不在那裏。例如,如果我需要在底部的按鈕,listView下面,我不能在這裏使用它,因爲你說所有的項目應該在同一個列表中,按下它們將需要完全滾動列表。 –