【问题标题】:Wrong recycleview/cardview width with horizontal scroll水平滚动的错误回收视图/卡片视图宽度
【发布时间】:2015-05-20 09:26:45
【问题描述】:

我在水平滚动的RecycleView 中设置CardView 的正确宽度尺寸时遇到问题。

这是卡片 xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp">

<!-- A CardView that contains a TextView -->
<android.support.v7.widget.CardView
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:id="@+id/card_view"
    android:layout_gravity="center"
    android:layout_width="match_parent"
    android:layout_height="150dp"
    card_view:cardCornerRadius="4dp">

<TextView
    android:id="@+id/info_text"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>
</android.support.v7.widget.CardView>

这是RecycleView:

<android.support.v7.widget.RecyclerView
            android:id="@+id/mrecycleview"
            android:scrollbars="horizontal"
            android:layout_width="match_parent"
            android:layout_height="150dp" />

我的 Activity 中的 LinearLayoutManager:

mLayoutManager = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false);
recycleView.setLayoutManager(mLayoutManager);

最后,这是我的适配器:

...
public static class ViewHolder extends RecyclerView.ViewHolder {
    CardView cv;
    TextView nameTV;

    ViewHolder(View itemView) {
        super(itemView);
        cv = (CardView)itemView.findViewById(R.id.card_view);
        nameTV = (TextView)itemView.findViewById(R.id.info_text);
    }
}


public MyCardAdapter(List<Dog> myDataset) {
    mDataset = myDataset;
}


@Override
public MyCardAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

    View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.my_card, parent, false);
    ViewHolder vh = new ViewHolder(v);

    return vh;
}

结果如下:

但我希望回收视图占据所有水平空间;像这样:

【问题讨论】:

    标签: android horizontal-scrolling


    【解决方案1】:

    只需将您的 onCreateViewHolder 更改为:

    @Override
    public MyCardAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    
    View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.my_card, parent, false);
    v.setMinimumWidth(parent.getMeasuredWidth());
    ViewHolder vh = new ViewHolder(v);
    
    return vh;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-08
      • 1970-01-01
      • 1970-01-01
      • 2021-06-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多