折叠栏与多个cardview

时间:2015-12-29 17:13:49

标签: android android-recyclerview android-cardview

  

我正在尝试使用recycleview创建一个带有折叠图像的应用程序,其下面有多个卡片视图,但每当我运行应用程序时,它只显示一个卡片视图

折叠工具栏的主要活动 包com.humanfox.klisfer.humanfox;

import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.support.design.widget.CollapsingToolbarLayout;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.graphics.Palette;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.List;


public class MainActivity extends AppCompatActivity {
    CollapsingToolbarLayout collapsingToolbarLayout;
    ImageView image;
    TextView personName;
    TextView personProf;


    RecyclerView rv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        image = (ImageView) findViewById(R.id.imageView);
        personName= (TextView)findViewById(R.id.textView);
        personProf=(TextView)findViewById(R.id.textView2);

        image.setImageResource(R.drawable.pic2);
        personName.setText("Aayush Chaubey");
        personProf.setText("App Developer");
        setSupportActionBar((Toolbar) findViewById(R.id.toolbar));
        collapsingToolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.collapsing_toolbar);
        collapsingToolbarLayout.setTitle("Capsule");
        collapsingToolbarLayout.setExpandedTitleColor(getResources().getColor(android.R.color.transparent));
        setPalette();



        rv=(RecyclerView)findViewById(R.id.rv);

        rv.setHasFixedSize(true);



    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    private void setPalette() {
        Bitmap bitmap = ((BitmapDrawable) image.getDrawable()).getBitmap();
        Palette.from(bitmap).generate(new Palette.PaletteAsyncListener() {
            @Override
            public void onGenerated(Palette palette) {
                int primaryDark = getResources().getColor(R.color.primary_dark);
                int primary = getResources().getColor(R.color.primary);
                collapsingToolbarLayout.setContentScrimColor(palette.getMutedColor(primary));
                collapsingToolbarLayout.setStatusBarScrimColor(palette.getDarkVibrantColor(primaryDark));
            }
        });

    }


    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if (id == R.id.imageView) {
            image.setImageResource(R.drawable.pic);
            setPalette();
            return true;
        }
        if (id == R.id.imageView) {
            image.setImageResource(R.drawable.pic2);
            setPalette();
            return true;
        }

        return super.onOptionsItemSelected(item);
    }



}

Recycleview Adapter

package com.humanfox.klisfer.humanfox;

import android.support.v7.widget.CardView;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;



import java.util.List;

public class RVAdapter extends RecyclerView.Adapter<RVAdapter.PersonViewHolder> {


    public static class PersonViewHolder extends RecyclerView.ViewHolder {
        CardView cv;
        TextView personName;
        TextView personProf;
        ImageView personPhoto;

        PersonViewHolder(View itemView){
            super(itemView);
            cv= (CardView)itemView.findViewById(R.id.cv);
            personName= (TextView)itemView.findViewById(R.id.textView);
            personProf= (TextView)itemView.findViewById(R.id.textView2);
            personPhoto=(ImageView)itemView.findViewById(R.id.imageView);
        }
    }

    List<Person> persons;

    public RVAdapter(List<Person> persons){
        this.persons=persons;
    }




    @Override
    public PersonViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
        View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item,viewGroup,false);
        PersonViewHolder pvh = new PersonViewHolder(v);
        return pvh;
    }

    @Override
    public void onBindViewHolder(PersonViewHolder personViewHolder, int i) {
        personViewHolder.personName.setText(persons.get(i).name);
        personViewHolder.personProf.setText(persons.get(i).passion);
        personViewHolder.personPhoto.setImageResource(persons.get(i).photoId);
    }

    @Override
    public void onAttachedToRecyclerView(RecyclerView recyclerView) {
        super.onAttachedToRecyclerView(recyclerView);
    }




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

Recycleview活动

package com.humanfox.klisfer.humanfox;

import android.app.Activity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by Klisfer on 12/29/2015.
 */
public class RecyclerViewActivity extends Activity {


    private List<Person> persons;
    private RecyclerView rv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.recycle);

        rv=(RecyclerView)findViewById(R.id.rv);

        LinearLayoutManager llm = new LinearLayoutManager(this);
        rv.setLayoutManager(llm);
        rv.setHasFixedSize(true);

        initializeData();
        initializeAdapter();
    }


    private void initializeData(){
        persons = new ArrayList<>();
        persons.add(new Person("Shashank Shekhar", "Manager", R.drawable.pic));
        persons.add(new Person("Ishan Sharma", "Web Developer", R.drawable.pic2));


    }


    private void initializeAdapter(){
        RVAdapter adapter = new RVAdapter(persons);
        rv.setAdapter(adapter);
    }


}

编辑: 它可以工作,但现在当我运行它时,两个卡片浏览量膨胀与前一个卡片组重叠。它可以解决。

主要活动

<?xml version="1.0" encoding="utf-8"?>

<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/app_bar_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        android:fitsSystemWindows="true">

        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/collapsing_toolbar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_scrollFlags="scroll|exitUntilCollapsed"
            app:contentScrim="?attr/colorPrimary"
            app:expandedTitleMarginStart="48dp"
            app:expandedTitleMarginEnd="64dp"
            android:fitsSystemWindows="true">

            <ImageView
                android:id="@+id/image"
                android:src="@drawable/pic"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:scaleType="centerCrop"
                android:fitsSystemWindows="true"
                app:layout_collapseMode="parallax"/>

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
                app:layout_collapseMode="pin" />

        </android.support.design.widget.CollapsingToolbarLayout>

    </android.support.design.widget.AppBarLayout>

    <android.support.v4.widget.NestedScrollView
        android:id="@+id/scroll"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="fill_vertical"

        android:clipToPadding="false"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

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

          <android.support.v7.widget.CardView
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:layout_marginTop="24dp"
              app:cardElevation="6dp"
              android:padding="16dp"
              app:cardUseCompatPadding="true"
              android:id="@+id/cv">

              <RelativeLayout

                  android:layout_width="match_parent"
                  android:layout_height="180dp"
                  android:padding="16dp"
                  >


                  <ImageView
                      android:layout_width="100dp"
                      android:layout_height="100dp"
                      android:scaleType="centerCrop"
                      android:layout_alignParentLeft="true"
                      android:layout_alignParentTop="true"
                      android:layout_marginRight="16dp"
                      android:src="@drawable/li"
                      android:id="@+id/imageView" />

                  <TextView
                      android:layout_width="wrap_content"
                      android:layout_height="wrap_content"
                      android:id="@+id/textView"
                      android:text="Aayush Chaubey"
                      android:layout_toRightOf="@+id/imageView"
                      android:layout_alignParentTop="true"
                      android:textSize="30sp"
                      />

                  <TextView
                      android:layout_width="wrap_content"
                      android:layout_height="wrap_content"
                      android:id="@+id/textView2"
                      android:text="app developer"

                      android:textSize="25sp"
                      android:layout_centerVertical="true"
                      android:layout_alignLeft="@+id/textView"
                      android:layout_alignStart="@+id/textView" />

                  <TextView
                      android:layout_width="wrap_content"
                      android:layout_height="wrap_content"
                      android:text="Show Capsule"
                      android:textColor="#00bfff"
                      android:textSize="20sp"
                      android:layout_marginBottom="10dp"
                      android:layout_marginRight="10dp"
                      android:id="@+id/textView3"
                      android:layout_alignParentBottom="true"
                      android:layout_alignParentRight="true"
                      android:layout_alignParentEnd="true" />



              </RelativeLayout>


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

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        app:layout_anchor="@id/app_bar_layout"
        style="@style/fab"
        app:theme="@style/ThemeOverlay.AppCompat.Light"
        app:layout_anchorGravity="bottom|right|end"
        />

    <android.support.v7.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/rv"
        />


</android.support.design.widget.CoordinatorLayout>

适配器中膨胀的item.xml

<?xml version="1.0" encoding="utf-8"?>

<android.support.v7.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.co nbm/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="24dp"
    app:cardElevation="6dp"
    android:padding="16dp"
    app:cardUseCompatPadding="true"
    android:id="@+id/cv">

    <RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.co nbm/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="180dp"
        android:padding="16dp"
        >


        <ImageView
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:scaleType="centerCrop"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:layout_marginRight="16dp"
            android:src="@drawable/li"
            android:id="@+id/imageView" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/textView"
            android:text="Aayush Chaubey"
            android:layout_toRightOf="@+id/imageView"
            android:layout_alignParentTop="true"
            android:textSize="30sp"
            />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/textView2"
            android:text="app developer"

            android:textSize="25sp"
            android:layout_centerVertical="true"
            android:layout_alignLeft="@+id/textView"
            android:layout_alignStart="@+id/textView" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Show Capsule"
            android:textColor="#00bfff"
            android:textSize="20sp"
            android:layout_marginBottom="10dp"
            android:layout_marginRight="10dp"
            android:id="@+id/textView3"
            android:layout_alignParentBottom="true"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="true" />



    </RelativeLayout>


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

1 个答案:

答案 0 :(得分:0)

问题在于您有两个单独的活动,其中一个活动实施CollapsingToolbarLayout而另一个活动RecyclerView。我不明白你为什么要用两个活动。

您需要将代码合并为一个单独的活动。