Mad*_*hur 27
使用带有cardview的可扩展列表视图
甚至
您可以使用换行内容作为cardview的高度,并在标题下方使用 textview,因此单击使textview 可见 ,反之亦然.
但是设计不是很糟糕吗?
如果你在展开或折叠时给出一些过渡或动画,那就不是了
如果你想看到一些默认转换,那么只需在父布局中编写android:animateLayoutChanges ="true".
Hei*_*erg 18
如果您在ListView或RecyclerView中使用CardViews,请参阅我的答案以获取建议的方法: RecyclerView展开/折叠项目
如果您只是使用CardView,请在您的onviewListener上执行此操作:
TransitionManager.beginDelayedTransition(cardview);
detailsView.setVisibility(View.VISIBLE);
Run Code Online (Sandbox Code Playgroud)
默认情况下,将您的detailsView的可见性保持为xml中的GONE.
Ray*_*ter 15
我用了一个cardview和扩大部分ITEM_DESCRIPTION在cardview.对于展开部分,我在标题部分(LinearLayout/item_description_layout)下面创建了一个TextView ,当用户单击标题布局时,将调用展开/折叠方法.以下是cardview中的代码:
<LinearLayout
android:id="@+id/item_description_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:minHeight="48dp"
android:paddingStart="16dp"
android:paddingEnd="16dp"
android:orientation="horizontal">
<TextView
android:id="@+id/item_description_title"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.9"
android:gravity="center_vertical"
android:text="@string/description"/>
<ImageView
android:id="@+id/item_description_img"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.1"
android:layout_gravity="center_vertical|end"
app:srcCompat="@drawable/ic_expand_more_black_24dp"/>
</LinearLayout>
<TextView
android:id="@+id/item_description"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="16dp"
android:paddingEnd="16dp"
android:paddingBottom="16dp"
android:gravity="center_vertical"
android:visibility="gone"
tools:text="description goes here"/>
Run Code Online (Sandbox Code Playgroud)
这是被调用的方法.我还添加了一个ObjectAnimator来处理块的展开/折叠动画.这是一个使用描述文本长度的简单动画.
void collapseExpandTextView() {
if (mItemDescription.getVisibility() == View.GONE) {
// it's collapsed - expand it
mItemDescription.setVisibility(View.VISIBLE);
mDescriptionImg.setImageResource(R.drawable.ic_expand_less_black_24dp);
} else {
// it's expanded - collapse it
mItemDescription.setVisibility(View.GONE);
mDescriptionImg.setImageResource(R.drawable.ic_expand_more_black_24dp);
}
ObjectAnimator animation = ObjectAnimator.ofInt(mItemDescription, "maxLines", mItemDescription.getMaxLines());
animation.setDuration(200).start();
}
Run Code Online (Sandbox Code Playgroud)
设置可见性GONE / VISIBLE之前只需执行一行代码即可:
TransitionManager.beginDelayedTransition([the rootView containing the cardView], new AutoTransition());
Run Code Online (Sandbox Code Playgroud)
无需在XML中使用animateLayoutChanges = true(这种方式也很简单,但是折叠行为很糟糕)
| 归档时间: |
|
| 查看次数: |
54158 次 |
| 最近记录: |