通过单击或滑动手势(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适配器时展开和折叠视图
Datatables Jquery 通过单击 TR 展开/折叠