如何在运行时计算listview项目的高度,并在android中设置所有具有相同高度的项目?

如何在运行时计算listview项目的高度,并在android中设置所有具有相同高度的项目?,android,listview,listviewitem,Android,Listview,Listviewitem,在我的应用程序中,我有一个列表视图,我正在将web视图膨胀到列表视图中。我能够将数据和图像加载到列表视图项中。问题在于,由于内容不同,列表项的高度不同。我想使所有列表项具有相同的高度 如何计算具有最大数据的列表项的高度,并将该高度设置为列表中其他列表项的高度 我该怎么做。。我对此一无所知。。假设第10项有最大高度,我想将该高度应用于其他项。请帮助我实现这一点,并感谢您的支持 <?xml version="1.0" encoding="utf-8"?> 有一组标志,比如 b

在我的应用程序中,我有一个列表视图,我正在将web视图膨胀到列表视图中。我能够将数据和图像加载到列表视图项中。问题在于,由于内容不同,列表项的高度不同。我想使所有列表项具有相同的高度

如何计算具有最大数据的列表项的高度,并将该高度设置为列表中其他列表项的高度

我该怎么做。。我对此一无所知。。假设第10项有最大高度,我想将该高度应用于其他项。请帮助我实现这一点,并感谢您的支持

<?xml version="1.0" encoding="utf-8"?>



有一组标志,比如

boolean[] flags=new boolean[szieOfList];
将此数组填充为false

在活动或适配器中有一个变量max height,比如max,在onCreate方法中用0初始化它,现在在正在膨胀xml的getView方法中,编写以下代码:

LayoutInflater layoutInflater = (LayoutInflater) getActivity()
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view= (WebView) layoutInflater
            .inflate(R.layout.web_view, null);
if(flag[position])
{
      LayoutParams params = view.getLayoutParams();
              params.height = max;
              view.setLayoutParams(params);
}     
ViewTreeObserver observer = view.getViewTreeObserver();
observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {
        //in here, place the code that requires you to know the dimensions.

         flag[position]=true;
         int height= view.getHeight();
         if(max<height)
         {
              max=height;
              notifyDataSetInvalidated();
         }
          else
         {
               LayoutParams params = view.getLayoutParams();
              params.height = max;
              view.setLayoutParams(params);
         }
         //this will be called as the layout is finished, prior to displaying.
    }
}
LayoutInflater LayoutInflater=(LayoutInflater)getActivity()
.getSystemService(上下文布局\充气机\服务);
视图=(WebView)布局展开器
.充气(R.layout.web_视图,空);
如果(标记[位置])
{
LayoutParams params=view.getLayoutParams();
参数高度=最大值;
view.setLayoutParams(参数);
}     
ViewTreeObserver observer=view.getViewTreeObserver();
observer.addOnGlobalLayoutListener(新的OnGlobalLayoutListener(){
@凌驾
公共图书馆{
//在此处,放置要求您了解尺寸的代码。
标志[位置]=真;
int height=view.getHeight();

如果(maxcan)您可以在这里发布膨胀的xml,以便有人可以帮助您,谢谢这一行对boolean[]flags=new boolean[szieOfList]做了什么;这里列表的大小将为空,对吗?它的列表大小,您在listView中从中加载数据,在您的情况下,它是数组长度。
LayoutInflater layoutInflater = (LayoutInflater) getActivity()
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view= (WebView) layoutInflater
            .inflate(R.layout.web_view, null);
if(flag[position])
{
      LayoutParams params = view.getLayoutParams();
              params.height = max;
              view.setLayoutParams(params);
}     
ViewTreeObserver observer = view.getViewTreeObserver();
observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {
        //in here, place the code that requires you to know the dimensions.

         flag[position]=true;
         int height= view.getHeight();
         if(max<height)
         {
              max=height;
              notifyDataSetInvalidated();
         }
          else
         {
               LayoutParams params = view.getLayoutParams();
              params.height = max;
              view.setLayoutParams(params);
         }
         //this will be called as the layout is finished, prior to displaying.
    }
}