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