gpt4 book ai didi

java - 如何知道ListView项是否使用两行?

转载 作者:行者123 更新时间:2023-12-02 01:54:15 25 4
gpt4 key购买 nike

我知道我们不必这样做,但我在 ScrollView 中使用 ListView,因此 ListView 不可滚动。我发现了一些根据项目数量计算 ListView 高度的函数,效果很好。

我第一次使用这个:

private static void expandListViewHeight(ListView listView) {
ListAdapter listAdapter = listView.getAdapter();

if (listAdapter == null)
return;

ViewGroup.LayoutParams params = listView.getLayoutParams();
listView.measure(0, 0);
params.height = listView.getMeasuredHeight() * listAdapter.getCount() + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
listView.setLayoutParams(params);
}

然后是这个:

private static void expandListViewHeight(ListView listView) {
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
return;
}

int totalHeight = 0;
int desiredWidth = View.MeasureSpec.makeMeasureSpec(listView.getWidth(),
View.MeasureSpec.AT_MOST);
for (int i = 0; i < listAdapter.getCount(); i++) {
View listItem = listAdapter.getView(i, null, listView);
listItem.measure(desiredWidth, View.MeasureSpec.UNSPECIFIED);
totalHeight += listItem.getMeasuredHeight();
}

ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
listView.setLayoutParams(params);
listView.requestLayout();
}

我不明白这一切,但只有当每一项都有一行时它才有效。因此,如果我使用小屏幕并且一个项目需要两行文本,我将看不到列表的最后一个元素。我搜索了如何知道 ListItem 是否需要两行,但没有找到任何内容,并且方法 getMeasuredHeight() 返回单个行项目的高度。

有办法做我想做的事吗?如果字符串超过 X 个字符,我不想只在高度上添加 50。我想要一些适用于所有设备尺寸的东西。

最佳答案

您可以尝试使用以下方法获取 textView 中的行数,而不是项目本身的行数: textview.getLineCount()

关于java - 如何知道ListView项是否使用两行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57408392/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com