如何找到recyclerView项目的高度(在我的情况下为tableRow)?

时间:2016-02-09 05:47:10

标签: android android-recyclerview

我有一个我需要在cardView中使用的RecyclerView(cardView还是scrollView的子节点),我想设置recyclerView的高度等于recyclelerView *行中一行的行数。

这是我的xml活动:

<NestedScrollView ...>
     <....other cardViews >
     <android.support.v7.widget.CardView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="8dp"
            android:background="@color/white"
            app:cardCornerRadius="4dp">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">

           // heading of cardview {
                <Button
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@drawable/button_boder"
                    android:drawableLeft="@mipmap/search_details_email"
                    android:drawablePadding="15dp"
                    android:gravity="start"
                    android:padding="15dp"
                    android:text="Job Completion Summary"
                    android:textColor="@color/customerColor"
                    android:textSize="18sp" />

                <View
                    android:layout_width="match_parent"
                    android:layout_height="2dp"
                    android:background="@color/line_color" />
              // heading end }

              // table start
                <TableLayout
                    android:id="@+id/Tablelayout"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@color/white">

                   // table header only {
                    <TableRow>

                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_weight="1"
                            android:padding="14dp"
                            android:text="Technician"
                            android:textSize="18sp"

                            />

                        <View
                            android:layout_width="1dp"
                            android:layout_height="match_parent"
                            android:background="@color/line_color" />

                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_weight="1"
                            android:padding="14dp"
                            android:text="CL"
                            android:textSize="18sp"

                            />

                        <View
                            android:layout_width="1dp"
                            android:layout_height="match_parent"
                            android:background="@color/line_color" />

                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_weight="1"
                            android:padding="14dp"
                            android:text="OS"
                            android:textSize="18sp" />

                        <View
                            android:layout_width="1dp"
                            android:layout_height="match_parent"
                            android:background="@color/line_color" />

                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_weight="1"
                            android:padding="14dp"
                            android:text="LS"
                            android:textSize="18sp" />

                        <View
                            android:layout_width="1dp"
                            android:layout_height="match_parent"
                            android:background="@color/line_color" />

                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_weight="1"
                            android:padding="14dp"
                            android:text="CO"
                            android:textSize="18sp" />
                    </TableRow>
                   //  table header end }

                   // rows below header created by recyclerView
                    <android.support.v7.widget.RecyclerView
                        android:id="@+id/technicianRecycleListView"
                        android:layout_width="match_parent"
                        android:layout_height="0dp">

                    </android.support.v7.widget.RecyclerView>
                </TableLayout>
            </LinearLayout>
        </android.support.v7.widget.CardView>

          <... other views />
 </NestedScrollView>

这是我的recyclerView项目的xml:

<TableRow xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="8dp"
    android:layout_marginRight="8dp"
    android:weightSum="5">

    <TextView
        android:id="@+id/technicianName"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:padding="14dp"
        android:text="Technician"
        android:textSize="18sp"

        />

    <View
        android:layout_width="1dp"
        android:layout_height="match_parent"
        android:background="@color/line_color" />

    <TextView
        android:id="@+id/ci"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:padding="14dp"
        android:text="CL"
        android:textSize="18sp"

        />

    <View
        android:layout_width="1dp"
        android:layout_height="match_parent"
        android:background="@color/line_color" />

    <TextView
        android:id="@+id/os"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:padding="14dp"
        android:text="OS"
        android:textSize="18sp" />

    <View
        android:layout_width="1dp"
        android:layout_height="match_parent"
        android:background="@color/line_color" />

    <TextView
        android:id="@+id/ls"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:padding="14dp"
        android:text="LS"
        android:textSize="18sp" />

    <View
        android:layout_width="1dp"
        android:layout_height="match_parent"
        android:background="@color/line_color" />

    <TextView
        android:id="@+id/co"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:padding="14dp"
        android:text="CO"
        android:textSize="18sp" />
</TableRow>

现在我想获得recyclerView项目布局的高度,这样我就可以在调用recyclerView的setAdaper之前计算recyclerView的确切高度。因此它将使用NestedScrollView滚动。谁知道?我怎样才能做到这一点?

我试图获取textView高度,但它始终返回0;

1 个答案:

答案 0 :(得分:2)

在视图完全膨胀并且所有数据都已填充并经过最终布局传递之前,您无法知道视图的高度。如果您需要知道视图在其充气之前的高度,您应该固定视图的高度并确保其背景数据永远不会强制更改该高度(例如,通过设置最大数量TextView中的行,椭圆化字符串以及裁剪和拟合图像。)