2017-11-19 16 views
0

私はRecyclerViewを使って製品のリストを表示するアプリケーションを開発しています。すべて正常に動作しますが、CardView内にTextViewが表示されないことがあります。レイアウトインスペクタを使用する私は、ビューがそこにあることに気づいたが、CardViewレイアウトはコンテンツを隠していた。Android - CardViewでコンテンツが非表示になることがあります

card_view_product.xml

<?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="wrap_content" 
    > 

    <android.support.v7.widget.CardView 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     app:cardCornerRadius="4dp" 
     app:cardElevation="4dp" 
     app:cardUseCompatPadding="true" 
     app:layout_constraintHorizontal_bias="0.0" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintTop_toTopOf="parent"> 

     <android.support.constraint.ConstraintLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginBottom="8dp" 
      android:orientation="vertical"> 


      <ImageView 
       android:id="@+id/imageViewProductImage" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_marginEnd="8dp" 
       android:layout_marginLeft="8dp" 
       android:layout_marginRight="8dp" 
       android:layout_marginStart="8dp" 
       android:layout_marginTop="8dp" 
       android:adjustViewBounds="true" 
       app:layout_constraintLeft_toLeftOf="parent" 
       app:layout_constraintRight_toRightOf="parent" 
       app:layout_constraintTop_toTopOf="parent"/> 

      <TextView 
       android:id="@+id/textViewProductName" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_marginEnd="8dp" 
       android:layout_marginLeft="8dp" 
       android:layout_marginRight="8dp" 
       android:layout_marginStart="8dp" 
       android:layout_marginTop="8dp" 
       android:maxLines="3" 
       android:scrollHorizontally="false" 
       android:text="Texto" 
       android:textColor="@color/black_87" 
       android:textSize="18sp" 
       app:layout_constraintLeft_toLeftOf="parent" 
       app:layout_constraintRight_toRightOf="parent" 
       app:layout_constraintTop_toBottomOf="@+id/imageViewProductImage"/> 

      <TextView 
       android:id="@+id/textViewPriceFrom" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_marginEnd="8dp" 
       android:layout_marginLeft="8dp" 
       android:layout_marginRight="8dp" 
       android:layout_marginStart="8dp" 
       android:layout_marginTop="8dp" 
       android:text="R$" 
       android:textColor="@color/black_24" 
       android:textSize="18sp" 
       app:layout_constraintLeft_toLeftOf="parent" 
       app:layout_constraintRight_toRightOf="parent" 
       app:layout_constraintTop_toBottomOf="@+id/textViewProductName"/> 

      <TextView 
       android:id="@+id/textViewPriceTo" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_marginEnd="8dp" 
       android:layout_marginLeft="8dp" 
       android:layout_marginRight="8dp" 
       android:layout_marginStart="8dp" 
       android:layout_marginTop="8dp" 
       android:text="R$" 
       android:textColor="@color/faded_orange" 
       android:textSize="18sp" 
       app:layout_constraintLeft_toLeftOf="parent" 
       app:layout_constraintRight_toRightOf="parent" 
       app:layout_constraintTop_toBottomOf="@+id/textViewPriceFrom"/> 
     </android.support.constraint.ConstraintLayout> 

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

</android.support.constraint.ConstraintLayout> 

content_category.xml

<?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" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" 
    tools:showIn="@layout/activity_category"> 

    <android.support.v7.widget.RecyclerView 
     android:id="@+id/recyclerViewProducts" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_marginBottom="8dp" 
     android:layout_marginLeft="8dp" 
     android:layout_marginRight="8dp" 
     android:layout_marginTop="8dp" 
     android:clipToPadding="true" 
     app:layout_constraintBottom_toBottomOf="parent" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintTop_toTopOf="parent"/> 
</android.support.constraint.ConstraintLayout> 

そして、私のアダプタのonBindViewHOlder:私はときにだけ気づいた

public void onBindViewHolder(ViewHolder holder, final int position) { 
    if (position>(products.size()-4)){ 
     parent.loadMoreProducts(); 
    } 
    final ProductModel product = products.get(position); 
    ImageView imageViewProduct = (ImageView) holder.mView.findViewById(R.id.imageViewProductImage); 
    TextView textViewName = (TextView) holder.mView.findViewById(R.id.textViewProductName); 
    TextView textViewPriceFrom = (TextView) holder.mView.findViewById(R.id.textViewPriceFrom); 
    TextView textViewPriceTo = (TextView) holder.mView.findViewById(R.id.textViewPriceTo); 

    if (product.imageURL!=null) { 
     Picasso.with(holder.mView.getContext()).load(imageUrl).into(imageViewProduct); 
    } 
    textViewPriceFrom.setVisibility(View.INVISIBLE); 
    textViewPriceFrom.setPaintFlags(textViewPriceFrom.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG); 

    if (product.enginePrice!=null && product.enginePrice.listPrice!=null && product.enginePrice.amountPrice!=null){ 
     if (product.enginePrice.listPrice>product.enginePrice.amountPrice){ 
      textViewPriceFrom.setVisibility(View.VISIBLE); 
     } 
     textViewPriceFrom.setText(Util.priceStringFromDouble(product.enginePrice.listPrice)); 
     textViewPriceTo.setText(Util.priceStringFromDouble(product.enginePrice.amountPrice)); 
    } 
    textViewName.setText(product.name+position); 
    holder.mView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 


     } 
    }); 
} 

ベローは私のコードです最初のTextViewはこのバグが発生するのと同じ値を持ちます。ベローは結果である:

enter image description here

答えて

0

考えられる解決策:

1)android:layout_width="0dp"これはおそらく、それが示されていないことを理由です。それをandroid:layout_width="wrap_content" に変更するか、それをandroid:layout_width="20dp"などの任意の数のdpに割り当てて、今表示されているかどうかを確認してください。

2)あなたはこのTextViewのために提供、適切な値がある場合、それは目に見えないtextViewPriceFrom.setVisibility(View.INVISIBLE);

3)をチェックすることができ、次の文を忘れてはいけないか確認してください。基本的に空の文字列ではありませんUtil.priceStringFromDouble(product.enginePrice.listPrice)

関連する問題