如何更改 ListView 项目的高度?

Posted

技术标签:

【中文标题】如何更改 ListView 项目的高度?【英文标题】:How to change height of a ListView item? 【发布时间】:2020-11-25 13:49:50 【问题描述】:

点击其中一个ListView元素后,想改变ListView Item的高度,但是做不到。

@Override
public View getView(int i, View view, ViewGroup viewGroup) 
        view = inflter.inflate(R.layout.list_item, null);
        final ImageView icon = (ImageView) view.findViewById(R.id.GoodsIcon);
        final View finalView = view;
        icon.setOnClickListener(new View.OnClickListener() 
            public void onClick(View v) 
                    finalView.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, dpToPx(250)));
            
        );
   return finalView;
    

但是如果你稍微改变一下代码,脚本会工作,但会改变所有 ListView 项的高度。

 @Override
    public View getView(int i, View view, ViewGroup viewGroup) 
            view = inflter.inflate(R.layout.list_item, null);
            view.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, dpToPx(250)));
       return view;
        

点击icon(ImageView)后如何让ListView项的高度发生变化?

【问题讨论】:

【参考方案1】:

您可以使用 View.getChildAt(int idx) 来获取特定视图。您只能获取可见项目(它从第一个可见项目开始,如果您需要获取第一个可见项目,您可以使用 ListView.getFirstVisiblePosition())。

例如:

View view = mListView.getChildAt(index - mListView.getFirstVisiblePosition());

if(v == null)
   return;

view.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, dpToPx(250)));

【讨论】:

可能是这样,注意变量名重叠。 它也没有帮助。

以上是关于如何更改 ListView 项目的高度?的主要内容,如果未能解决你的问题,请参考以下文章

当 ListView.builder 顶部附近的项目高度被缓存但已更改时,如何从 animateTo 获得正常行为?

动态更改ListView ItemsPanel高度

C# Wpf 如何使用其中的按钮更改 Listviewitem 的高度?

Qml ListView动态高度项过渡

Android,ListView IllegalStateException:“适配器的内容已更改但ListView没有收到通知”

UWP ListView下模板宽度问题