NestedScrollView 不在 recyclerView 生成的数据中滚动

NestedScrollView not scrolling in recyclerView generated data

我在 RecyclerView 中生成的 CardView 中使用 NestedScrollView。我无法让滚动工作 - 似乎有零星的时刻,当我可以滚动浏览顶部项目的列表时,但似乎没有其他卷轴工作。干杯!

这是在 RecyclerView 中生成的 cardView 的布局:

<?xml version="1.0" encoding="utf-8"?
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/checkout_relativeLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">

<TextView
    android:id="@+id/merchantPurchase"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="2dp"
    android:layout_marginLeft="12dp"
    android:layout_marginTop="4dp"
    android:text="TextView"
    android:textSize="18sp"
    app:layout_constraintBottom_toTopOf="@+id/checkoutCard"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.0"
    android:layout_marginStart="12dp" />

<android.support.v7.widget.CardView
    android:id="@+id/checkoutCard"
    android:layout_width="340dp"
    android:layout_height="90dp"
    android:layout_margin="5dp"
    android:layout_marginBottom="11dp"
    android:layout_marginEnd="8dp"
    android:layout_marginLeft="8dp"
    android:layout_marginRight="8dp"
    android:layout_marginStart="8dp"
    android:elevation="5dp"
    app:cardCornerRadius="5dp"
    app:contentPadding="5dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_goneMarginLeft="5dp"
    app:layout_goneMarginRight="5dp">

    <android.support.constraint.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal"
        android:paddingRight="5dp">

        <TextView
            android:id="@+id/textCentre"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="2dp"
            android:text="Test2"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintHorizontal_bias="0.7"
            app:layout_constraintLeft_toLeftOf="@+id/extraContainer"
            app:layout_constraintRight_toRightOf="@+id/extraContainer" />

        <TextView
            android:id="@+id/textRight"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="2dp"
            android:text="Test3"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintHorizontal_bias="0.533"
            app:layout_constraintLeft_toLeftOf="@+id/otherContainer"
            app:layout_constraintRight_toRightOf="@+id/otherContainer" />

        <TextView
            android:id="@+id/textLeft"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="1dp"
            android:text="Test1"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintHorizontal_bias="0.444"
            app:layout_constraintLeft_toLeftOf="@+id/priceContainer"
            app:layout_constraintRight_toRightOf="@+id/priceContainer" />

        <TextView
            android:id="@+id/extraContainer"
            android:layout_width="50dp"
            android:layout_height="wrap_content"
            android:layout_marginBottom="8dp"
            android:layout_marginLeft="16dp"
            android:layout_marginStart="16dp"
            android:layout_marginTop="8dp"
            android:adjustViewBounds="true"
            android:clickable="true"
            android:scaleType="centerCrop"
            android:textAlignment="center"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toRightOf="@+id/priceContainer"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.17" />

        <TextView
            android:id="@+id/priceContainer"
            android:layout_width="50dp"
            android:layout_height="wrap_content"
            android:layout_marginBottom="8dp"
            android:layout_marginLeft="24dp"
            android:layout_marginStart="24dp"
            android:layout_marginTop="8dp"
            android:adjustViewBounds="true"
            android:clickable="true"
            android:scaleType="centerCrop"
            android:textAlignment="center"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toRightOf="@+id/itemTitle"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.17" />

        <TextView
            android:id="@+id/otherContainer"
            android:layout_width="50dp"
            android:layout_height="wrap_content"
            android:layout_marginBottom="8dp"
            android:layout_marginLeft="16dp"
            android:layout_marginStart="16dp"
            android:layout_marginTop="8dp"
            android:adjustViewBounds="true"
            android:clickable="true"
            android:scaleType="centerCrop"
            android:textAlignment="center"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toRightOf="@+id/extraContainer"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.17" />

        <TextView
            android:id="@+id/itemTitle"
            android:layout_width="71dp"
            android:layout_height="39dp"
            android:layout_marginLeft="4dp"
            android:layout_marginStart="4dp"
            android:text="TextView"
            android:textAlignment="center"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.512" />

        <LinearLayout
            android:layout_width="63dp"
            android:layout_height="53dp"
            android:layout_marginLeft="0dp"
            android:orientation="vertical"
            app:layout_constraintLeft_toRightOf="@+id/otherContainer"
            tools:layout_editor_absoluteY="19dp"
            android:layout_marginRight="8dp"
            app:layout_constraintRight_toRightOf="parent"
            tools:layout_editor_absoluteX="258dp">

            <android.support.v4.widget.NestedScrollView
                android:id="@+id/nestedScrollView"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:fillViewport="true"
                android:layout_gravity="fill_vertical">

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

                    <TextView
                        android:id="@+id/textView45"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:text="TextView" />

                    <TextView
                        android:id="@+id/textView44"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:text="TextView" />

                    <TextView
                        android:id="@+id/textView43"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:text="TextView" />

                </LinearLayout>
            </android.support.v4.widget.NestedScrollView>
        </LinearLayout>

    </android.support.constraint.ConstraintLayout>

</android.support.v7.widget.CardView>

然后,我的 MainActivity 的删节代码:

  @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.checkout_home);

    cardPurchasesDataSet = new ArrayList<>();
    for (int i = 0; i < productsForPurchase.length; i++) {
        cardPurchasesDataSet.add(productsForPurchase[i]);
    }
    card_totalPrice = new ArrayList<>();
    for (int i = 0; i < totalPriceData.length; i++) {
        card_totalPrice.add(totalPriceData[i]);
    }
    card_extras = new ArrayList<>();
    for (int i = 0; i < extrasData.length; i++) {
        card_extras.add(extrasData[i]);
    }
    card_more = new ArrayList<>();
    for (int i = 0; i < moreData.length; i++) {
        card_more.add(moreData[i]);
    }
    merchants = new ArrayList<>();
    for (int i = 0; i < merchantsData.length; i++) {
        merchants.add(merchantsData[i]);
    }

    card_recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
    card_layoutManger = new LinearLayoutManager(this);
    card_recyclerView.setLayoutManager(card_layoutManger);
    card_adapter = new checkout_card_Adapter(cardPurchasesDataSet, card_totalPrice, card_extras, card_more, merchants);
    card_recyclerView.setAdapter(card_adapter);
}

更新 01:添加了 mainActivity 布局

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">

<android.support.v7.widget.RecyclerView
    android:id="@+id/recyclerView"
    android:layout_width="368dp"
    android:layout_height="551dp"
    app:layout_constraintTop_toTopOf="parent"
    android:layout_marginTop="8dp"
    android:layout_marginLeft="8dp"
    app:layout_constraintLeft_toLeftOf="parent"
    android:layout_marginRight="8dp"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintBottom_toBottomOf="parent"
    android:overScrollMode="never"
    android:layout_marginBottom="8dp" />

适配器

public class Checkout_Card_Adapter extends 
RecyclerView.Adapter<Checkout_Card_Adapter.ViewHolder>{
private ArrayList<String> titleOfPurchase;
private ArrayList<String> priceOfPurchase;
private ArrayList<String> extrasOfPurchase;
private ArrayList<String> moreOfPurchase;
private ArrayList<String> merchantOfPurchase;

public Checkout_Card_Adapter(ArrayList<String> titleOfPurchase, ArrayList<String> priceOfPurchase, ArrayList<String> extrasOfPurchase, ArrayList<String> moreOfPurchase, ArrayList<String> merchantOfPurchase) {
    this.titleOfPurchase = titleOfPurchase;
    this.priceOfPurchase = priceOfPurchase;
    this.extrasOfPurchase = extrasOfPurchase;
    this.moreOfPurchase = moreOfPurchase;
    this.merchantOfPurchase = merchantOfPurchase;
}

public interface VenueAdapterInterface {
    void onVenueButtonClick(int position);
}

@Override
public Checkout_Card_Adapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
    View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.checkout_scrollable_card, viewGroup, false);
    Checkout_Card_Adapter.ViewHolder viewHolder = new Checkout_Card_Adapter.ViewHolder(v);
    return viewHolder;
}

@Override
public void onBindViewHolder(Checkout_Card_Adapter.ViewHolder viewHolder, final int position) {
    viewHolder.itemTitle.setText(titleOfPurchase.get(position));
    viewHolder.itemPrice.setText(priceOfPurchase.get(position));
    viewHolder.itemExtras.setText(extrasOfPurchase.get(position));
    viewHolder.itemMore.setText(moreOfPurchase.get(position));
    viewHolder.merchant.setText(merchantOfPurchase.get(position));
}

@Override
public int getItemCount() {
    return titleOfPurchase.size();
}

public class ViewHolder extends RecyclerView.ViewHolder {

    public ImageButton itemImage;
    public TextView itemTitle;
    public TextView itemPrice;
    public TextView itemExtras;
    public TextView itemMore;
    public TextView merchant;

    public ViewHolder(final View itemView) {
        super(itemView);
        itemTitle = (TextView) itemView.findViewById(R.id.itemTitle);
        itemPrice = (TextView) itemView.findViewById(R.id.priceContainer);
        itemExtras = (TextView) itemView.findViewById(R.id.extraContainer);
        itemMore = (TextView) itemView.findViewById(R.id.otherContainer);
        merchant = (TextView) itemView.findViewById(R.id.merchantPurchase);
    }
}

}

根据您的屏幕截图,您希望它如何在显示所有视图的同时滚动内部视图?它只会在无法显示所有文本视图的小型设备上滚动。能否请您 post 从应用中截取此视图的正确屏幕截图。