2015-01-09 530 views
2

我想简单地将TextView放在CardView内,但无济于事。我需要做的就是让两个数字出现在两个CardViews之内。目前,在下面的代码中,出现两个CardViews,但不显示任何文本/内容。Android CardView不显示内容

我已经尝试了很多不同的组合,但似乎没有工作!将TextView放在LinearLayout内不起作用,也不会使其成为CardView的直接子项。

这里是我当前的代码:

calendar_view.xml 

<?xml version="1.0" encoding="utf-8"?> 
<hoo.box.facecalendar.SquareCardView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:card_view="http://schemas.android.com/apk/res-auto" 
    card_view:cardCornerRadius="4dp" 
    card_view:cardUseCompatPadding="true" 
    android:id="@+id/calendar_view_card" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <TextView 
      android:id="@+id/calendar_view_day" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerInParent="true" 
      android:gravity="center" 
      android:singleLine="true" 
      android:textColor="@color/primary_text"/> 

    </RelativeLayout> 

</hoo.box.facecalendar.SquareCardView> 

SquareCardView.java 

public class SquareCardView extends CardView { 
    public SquareCardView(Context context) { 
     super(context); 
    } 

    public SquareCardView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public SquareCardView(Context context, AttributeSet attrs, int defStyleAttr) { 
     super(context, attrs, defStyleAttr); 
    } 

    @Override 
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
     final int width = getDefaultSize(getSuggestedMinimumWidth(), widthMeasureSpec); 
     setMeasuredDimension(width, width); 
    } 
} 

CalendarAdapter.java 

public class CalendarAdapter extends RecyclerView.Adapter<CalendarAdapter.CalendarViewHolder> { 
    private LayoutInflater inflater; 
    private Date curDate; 
    private List<Date> dateList; 

    public CalendarAdapter(Context context) { 
     inflater = LayoutInflater.from(context); 
     curDate = new Date(); 
     dateList = new ArrayList<Date>(); 
    } 

    @Override 
    public CalendarViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { 
     View view = inflater.inflate(R.layout.calendar_view, viewGroup, false); 
     CalendarViewHolder viewHolder = new CalendarViewHolder(view); 
     return viewHolder; 
    } 

    @Override 
    public void onBindViewHolder(CalendarViewHolder calendarViewHolder, int i) { 
     if (dateList.size() <= i) { 
      Date tempDate = new Date(curDate); 
      tempDate.addDays(i + 1); 
      dateList.add(i, tempDate); 
     } 
     Date iDate = dateList.get(i); 
     calendarViewHolder.TEXTVIEW.setText(Integer.toString(iDate.day)); 
    } 

    @Override 
    public int getItemCount() { return dateList.size() + 1; } 

    class CalendarViewHolder extends RecyclerView.ViewHolder { 
     public final TextView TEXTVIEW; 
     public final SquareCardView CARDVIEW; 

     public CalendarViewHolder(View itemView) { 
      super(itemView); 

      TEXTVIEW = (TextView) itemView.findViewById(R.id.calendar_view_day); 
      CARDVIEW = (SquareCardView) itemView.findViewById(R.id.calendar_view_card); 
     } 
    } 
} 

只是之前由于任何人谁可以帮助我!这已经让我吃了好几天了!

+1

是否所有这些代码都相关?向我们展示您创建CardView的位置以及将TextView放入其中的代码可能足以向我们展示。 – Reti43 2015-01-09 22:44:05

+0

事情是这样的,我不知道**地球上的哪个**我错了。我认为这可能是一个阶段适配器的问题。 – wincinderith 2015-01-09 23:08:57

+1

查看[mcve](http://stackoverflow.com/help/mcve)和[sscce](http://sscce.org/),了解如何生成重现错误的代码的最小版本或你面临的困难。发布整个代码并期望我们通过每一行都不会让我们的生活变得轻松。有些甚至可能不赞赏所显示的努力。在尝试了几件事情之后,可能仍然是这种情况,您不知道错误来自哪里,但可以记录您的尝试,因此我们不会徒劳地重复相同的步骤。 – Reti43 2015-01-09 23:15:44

回答

1

经过大约3个小时的玩,我找到了解决方案!这是SquareCardViewonMeasure()没有调整内部布局边界的问题。下面是我改变它:

@Override 
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
    super.onMeasure(widthMeasureSpec, widthMeasureSpec); 
} 
0

您的支持库,你正在使用的cardview有问题。编译后的sdk版本和支持lib版本应该相同。

例如: 在的build.gradle

如果compileSdkVersion 23则

依赖关系

你应该使用

编译 'com.android.support:cardview-v7:23.0.0'

检查build.gradle中的两个版本。

PS:如果你使用支持库版本24工作室建议你以下

“这种支持库不应该使用不同的版本(24)比compilesdkversion(23)”

好运!

+0

已经有一个答案证明了你为什么要把你的想法“有可能是......“这似乎不是回答问题的实际尝试。 – 2016-03-18 11:25:36