gpt4 book ai didi

android - 添加涟漪效应和线分隔符

转载 作者:行者123 更新时间:2023-11-29 02:40:50 24 4
gpt4 key购买 nike

我有一个回收 View ,其中的每个项目都表示为线性布局。我正在尝试为每个项目添加涟漪效应。

线性布局看起来像

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/list_item"
style="@style/ItemStyle"
android:paddingLeft="6dp"
android:descendantFocusability="blocksDescendants">

上述布局中的 ItemStyle 为

<style name="ItemStyle">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:background">@drawable/item_background</item>
<item name="android:minHeight">@dimen/item_height</item>
<item name="android:orientation">horizontal</item>
<item name="android:paddingBottom">1dp</item>
<item name="android:paddingRight">1dp</item>
</style>

@drawable/item_background 给出为

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@color/primary" />
<item android:state_activated="true" android:drawable="@color/blue" />
<item android:drawable="@drawable/item_divider_background" />
</selector>

问题是,如果我将 android:background@drawable/item_background 更改为 ?attr/selectableItemBackground,我能够得到涟漪效应,但 @drawable/item_background 中提到的线分隔符 @drawable/item_divider_background 没有出现。谁能告诉我添加分隔线和涟漪效应的解决方法是什么。

最佳答案

一种解决方法是使用项目装饰器以编程方式添加分隔符-

public class MyDecorator extends RecyclerView.ItemDecoration  {
private Drawable mDivider;

public MyDecorator(Context context) {
mDivider = ContextCompat.getDrawable(context, org.itm.xoinfo.R.drawable.simpleline);
}

@Override
public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) {
int left = parent.getPaddingLeft();
int right = parent.getWidth() - parent.getPaddingRight();

int childCount = parent.getChildCount();
for (int i = 0; i < childCount; i++) {
View child = parent.getChildAt(i);

RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams();

int top = child.getBottom() + params.bottomMargin;
int bottom = top + mDivider.getIntrinsicHeight();

mDivider.setBounds(left, top, right, bottom);
mDivider.draw(c);
}
}

并像这样添加它 recyclerView.addItemDecoration(new MyDecorator(this));

对于涟漪效应,只需将 ?attr/selectableItemBackground 添​​加到回收器 View 的布局即可。

关于android - 添加涟漪效应和线分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44281119/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com