设置固定高度的RecycleView出现item未填充满一行

item布局是这样

 <android.support.constraint.ConstraintLayout
        android:id="@+id/root"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingTop="8dp"
        android:paddingRight="30dp"
        android:paddingLeft="@dimen/dimen_dialog_connect_padding_left"
        android:paddingBottom="8dp">

        <TextView
            android:id="@+id/tv_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@android:color/transparent"
            android:singleLine="true"
            android:textColor="@color/textColorBlack"
            android:textSize="@dimen/dimen_main_message_small_size"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <TextView
            android:id="@+id/tv_retry"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/retry"
            android:textColor="@color/textColorBlack"
            android:textSize="@dimen/dimen_main_message_small_size"
            android:visibility="gone"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <ProgressBar
            android:id="@+id/progressBarNormal"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <TextView
            android:id="@+id/tv_fail"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="21dp"
            android:text="@string/connect_fail"
            android:textColor="@color/textColorError"
            android:textSize="@dimen/dimen_main_message_small_size"
            android:visibility="gone"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintRight_toLeftOf="@id/tv_retry"
            app:layout_constraintTop_toTopOf="parent" />

    </android.support.constraint.ConstraintLayout>
</layout>

布局里面的RecvcleView是这样

   <android.support.v7.widget.RecyclerView
                android:id="@+id/rv_new"
                android:layout_width="match_parent"
                android:layout_height="72dp"
                android:layout_marginTop="@dimen/dimen_dialog_connect_margin_top"
                android:background="#00ff00"
                android:maxHeight="72dp"
                />

这里如果layout_height设置为固定高度72,会出现item不能match_parent

但如果改成wrap_conteng,就不会有这个问题,但如果我一定要设置这个RecycleView的高度呢?

改成这样

    <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="72dp">

            <android.support.v7.widget.RecyclerView
                android:id="@+id/rv_new"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="@dimen/dimen_dialog_connect_margin_top"
                android:background="#00ff00"
                android:maxHeight="72dp"
                />
        </LinearLayout>

 

设置 RecyclerViewItem 高度,可以通过在 RecyclerView.Adapter 的 onBindViewHolder 方法中设置 ItemView 的 LayoutParams 来实现。具体步骤如下: 1. 在 onCreateViewHolder 方法中加载 ItemView 并返回 ViewHolder。 2. 在 onBindViewHolder 方法中设置 ItemView 的 LayoutParams,可以设置高度固定值,也可以根据具体需求设置为动态值。 例如,以下是设置 ItemView 高度固定值的样例代码: ```java public class MyAdapter extends RecyclerView.Adapter<MyViewHolder> { private List<MyItem> mItemList; // ... 其他方法 ... @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View itemView = LayoutInflater.from(parent.getContext()) .inflate(R.layout.item_layout, parent, false); return new MyViewHolder(itemView); } @Override public void onBindViewHolder(MyViewHolder holder, int position) { MyItem item = mItemList.get(position); // 设置 ItemView高度为 200dp ViewGroup.LayoutParams layoutParams = holder.itemView.getLayoutParams(); layoutParams.height = 200; holder.itemView.setLayoutParams(layoutParams); // ... 其他设置操作 ... } } ``` 如果要根据具体需求设置 ItemView高度,可以通过计算得出高度值,然后设置给 LayoutParams。例如,以下是设置 ItemView 高度为屏幕宽度的一半的样例代码: ```java @Override public void onBindViewHolder(MyViewHolder holder, int position) { MyItem item = mItemList.get(position); // 计算 ItemView高度为屏幕宽度的一半 int screenWidth = holder.itemView.getResources().getDisplayMetrics().widthPixels; int itemHeight = screenWidth / 2; ViewGroup.LayoutParams layoutParams = holder.itemView.getLayoutParams(); layoutParams.height = itemHeight; holder.itemView.setLayoutParams(layoutParams); // ... 其他设置操作 ... } ``` 注意,如果设置高度值过大,可能会导致 RecyclerView 布局出现问题,因此需要根据具体情况进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值