0

我希望在 PreferenceActivity 上显示一个 listView,类似于 android OS wifi-settings 用于网络列表的内容(例如,图像的底部区域)。但是,这样的东西不可用,所以我创建了一个扩展 Preference 的新类,而我在 onCreateView 中返回的只是一个 ListView 实例。

它起作用了,但是无论我对它的 layoutParams 做什么,也不管我对适配器做什么,listView 的大小都是恒定的,大约是一个项目。即使我在 onCreateView 中设置了适配器,它也具有完全相同的大小。

不仅如此,而且 listView 不能滚动,即使很明显它里面有多个项目。

当然,我想使用与所有偏好相同的文本大小标准,以给人一种原生的感觉。

谁能告诉我可以做些什么来使它正常工作?

顺便说一句,该应用程序应该适用于 android API 10+(最低 10)。

4

2 回答 2

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);
于 2012-05-16T10:28:50.900 回答
0

好的,答案是将 setContentView 用于您希望的任何布局(包括您希望的任何视图),为首选项添加一个 listView,并为此 listView 调用 bind 和 setAdapter。

我通过查看其他解决方案找到了这个解决方案,比如这个: http: //kmansoft.com/2011/08/29/implementing-long-clickable-preferences/

于 2012-05-16T13:35:58.797 回答