通过单击或滑动手势(Android)展开/折叠 CardView?

Posted

技术标签:

【中文标题】通过单击或滑动手势(Android)展开/折叠 CardView?【英文标题】:Expanding/Collapsing CardView with click or swipe gesture (Android)? 【发布时间】:2015-10-07 18:22:57 【问题描述】:

我正在寻找一种解决方案,它可以让我展开卡片视图以查看更多信息,然后轻松折叠它。 Google Keep 有这样的卡片示例。有谁知道他们是怎么做到的?我会创建 2 个版本的卡片视图(一个是折叠的,一个是展开的),然后使用 Animator 类和手势方法在两个视图之间转换吗?我正在使用 Recyclerview 来保存我的卡片视图。

如果它完全相关,我发现了这个:http://developer.android.com/training/animation/layout.html

【问题讨论】:

卡片视图有两个部分,顶部总是会显示,底部会隐藏或显示,对吧?然后您可以在每次触摸卡片(或任何其他事件)时更改底部的可见性,并使卡片视图高度wrap_content。如果这如您所愿,那么您可以通过在anim 文件夹内的 xml 文件中使用 <set><scale> 轻松地制作动画。这是你要求的吗?如果是,请告诉我,我会发布它的代码。 【参考方案1】:
<?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.com/tools"
android:orientation="vertical"
android:layout_
android:layout_>

<LinearLayout
android:layout_
android:orientation="vertical"
android:animateLayoutChanges="true"
android:layout_>

<LinearLayout
android:layout_
android:layout_>
   //here put the view which is always visible
<LinearLayout
android:layout_
android:visibilty="gone"
android:id="@+id/expandableLayout"
android:layout_>
   //here put which will collapse and expand
</LinearLayout>
</android.support.v7.widget.CardView>

在你的数组列表对象类中扩展一个布尔值

  if (listobj.isexpanded)
    
        holder.expandableLayout.setVisibility(View.VISIBLE);
    
    else 
        holder.expandableLayout.setVisibility(View.GONE);
    
    holder.cardView.setOnClickListener(new View.OnClickListener() 
        @Override
        public void onClick(View v) 
            if (listobj.isexpanded)
            
                holder.expandableLayout.setVisibility(View.GONE);
                listobj.isexpanded=false;
                notifyItemChanged(position);
            
            else 
                holder.expandableLayout.setVisibility(View.VISIBLE);
                listobj.isexpanded=true;
                notifyItemChanged(position);
            
        
    );

试试这样的

【讨论】:

以上是关于通过单击或滑动手势(Android)展开/折叠 CardView?的主要内容,如果未能解决你的问题,请参考以下文章

如何在android中单击listview适配器时展开和折叠视图

android怎样可以控制手势滑动的

Datatables Jquery 通过单击 TR 展开/折叠

如何在单击href时翻转展开或折叠文本 - 淘汰赛

使用AnimateWindow来实现窗口淡入淡出(主要有四种动画,滚动,滑动,折叠或展开,和淡入淡出)

android 手势操作中滑动和滚动的区别