android中ListView中行的大小

时间:2016-08-13 03:45:11

标签: android listview

这是我的自定义列表适配器的getView()方法

    public override View GetView(int position, View convertView, ViewGroup parent)
    {
        View row = convertView;

        if (row == null)
        {
            row = LayoutInflater.From(mContext).Inflate(Resource.Layout.listview_row, null, false);
        }
        TextView textName = row.FindViewById<TextView>(Resource.Id.textName);
        textName.Text = mItems[position];
        return row;
    }

这是我的listview_row.xml文件,它是布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:minWidth="25px"
android:minHeight="25px">
<TextView
    android:text="Name"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/textName"
    android:padding="10dp"/>
</LinearLayout>

我很好奇列表视图如何调整每一行的大小。

当我将“listview_row”膨胀到视图并将其放入ListView时,我期望第一个膨胀的视图将占用ListView的整个空间,因为此视图具有layout_width =“match_parent”和layout_height =“的属性match_parent”。

但是,当我运行此代码时,listView大小的每一行都基于textView中行的内容。这怎么可能?是否与inflate()方法的参数有关?

你们能解释一下ListView如何调整行数吗?

1 个答案:

答案 0 :(得分:0)

我认为您可以将 ListView 视为允许在其中显示其他视图的区域,它是一个容器。在您的情况下,视图( TextView )为wrap_content表示只占用所需的空间(垂直)。因此, ListView 可能包含多个。

如果这是你想知道的实际计算,那么虽然我记得看到了什么,但我不记得我何时或何地看到这些信息。