固定大小(不滚动)ListView

问题描述:

我知道这个问题已经讨论过,但我还没有找到合适的答案。 我想有一个3行2列的表格。左栏是标题,右栏是项目清单。固定大小(不滚动)ListView

因此,我有3个列表,一个在另一个之下,我想使整个屏幕可滚动(不是每个列表可单独滚动)。

解决方法是使用ScrollView作为主要组件,然后使用TableView,然后在表的右栏中使用ListView。问题是ListView是一个可滚动的组件,不会在ScrollView内工作。

我的问题 - 有没有任何组件,无论是Android API或第三方的一部分,具有ListView的功能,但是是固定的大小?我想享受适配器功能和onItemClick()功能(这给了我点击的项目的位置)。

感谢

编辑:我想建议设置手动ListView的高度,其结果是,在ListView应该在区域中确实扩大为必要的,但并没有显示在列表中的元素。

我用下面的代码:

ListView lv = (ListView)view.findViewById(R.id.list); 
lv.setAdapter(adapter); 
LinearLayout.LayoutParams lParams = new LinearLayout.LayoutParams(lv.getLayoutParams()); 
lParams.height = calculateHeight(lv); 
lv.setLayoutParams(lParams); 

没有最后3行只是正常工作,但随后的大小是固定的,这使我回到我原来的问题。

+0

我不完全确定我明白你的问题,但如果问题在于listview是一个可滚动项目的事实,你可以不使用'setScrollContainer(boolean isScrollContainer)'基本上禁用在列表视图上的滚动? ...链接到Android文档http://developer.android.com/reference/android/view/View.html#setScrollContainer(boolean) – brendosthoughts 2013-05-01 06:01:34

+0

*我想使整个屏幕滚动(不是每个列表可滚动分开) 。*和*我想享受适配器功能和onItemClick()功能*这两句话自相矛盾。如果你要显示'ListView'而不滚动(显示所有内容?),那么适配器就没用了,你最好手工建立列表。如果你想要别的东西,请解释一下。 – Luksprog 2013-05-01 06:14:35

+0

@Luksprog,好吧,说我手动填充列表,虽然适配器是一个很好的方式来做到这一点,我怎样才能设置每个元素的'onClick()'发送元素在列表中的位置?我是否必须使用数字设置动态ID,然后将它们解析为int或者是否有更多内置方法?另外'ListView'在点击元素时有动画效果,我也必须自己实现呢?我知道有可能自己实现类似于ListView的东西,我只是希望有一些东西可以帮我节省工作。 – tbkn23 2013-05-01 15:25:12

我从你期望的假设就是你正在寻找

(标题,(ListView控件))

(标题,(ListView控件))

(标题,(ListView控件))

如果这是你正在寻找的东西,那么你可以使用tableView作为主布局,并且你可以通过给它的固定高度使listView不可滚动。

如何做到这一点,你需要测量每个子视图的高度和其分隔高度的高度,并将listview的布局参数设置为其确切的高度,然后listview将不可滚动,但整个tableview是可滚动的。

我想请你看看这个链接。 http://iserveandroid.blogspot.sg/2011/06/how-to-calculate-lsitviews-total.html

一旦你设置布局内容视图,您需要将适配器设置为列表视图,并立即您需要设置(计算出的高度)的LayoutParams到列表视图。

+0

我会尽力,虽然我希望有一些不太“黑客”的东西。链接中的代码是否考虑了填充,边距等? – tbkn23 2013-05-01 15:27:45

+0

是的,它会被考虑在内。 – Mani 2013-05-02 02:07:31

+0

您的建议无效。请参阅编辑过的问题。 – tbkn23 2013-05-02 21:36:29