2

TextViewa を a の中に単純に配置しようとしていますCardViewが、役に立ちません。2 つの数字の中に 2 つの数字を表示するだけですCardViews。現時点では、以下のコードでは 2 つCardViewsが表示されますが、その中にテキストやコンテンツは表示されません。

さまざまな組み合わせを試しましたが、どれも機能していないようです! TextViewの中に a を配置して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);
        }
    }
}

私を助けてくれる人に感謝します!これは何日も私を食い尽くしています!

4

2 に答える 2

0

カードビューに使用しているサポート ライブラリに問題があります。コンパイルされた SDK のバージョンとサポート ライブラリのバージョンは同じである必要があります。

例: build.gradle

compileSdkVersion 23 の場合

依存関係で使用する必要があります

「com.android.support:cardview-v7:23.0.0」をコンパイルします

build.gradle で両方のバージョンを確認してください。

ps: サポート ライブラリ バージョン 24 スタジオを使用する場合は、次のことをお勧めします。

「このサポート ライブラリは、compilesdkversion (23) とは異なるバージョン (24) を使用しないでください」

幸運 !

于 2016-03-18T11:06:05.457 に答える