1
little_cup 2015-11-13 00:04:55 +08:00
从设计的角度说,你不应该让所有的 View 都带上 Ripple 效果,只应该让可点击的元素带上。
从程序的角度说,你无法让所有的 View 都带上 Ripple 效果,只能让拿到点击事件的元素带上。 |
2
AtlantisZ OP @little_cup 额,我只是感觉很难有短文字叙述清楚问题,原来标题是如何让 RecyclerView 的子 Item 带上水波纹效果了.感觉太局限了.
请问现在 RecyclerView 的子 Item 已经可以响应点击事件跳转 Activity 了,请问如何才能带上水波纹的点击效果.我在 Item 的 layout 根布局修改 android:background="?android:attr/selectableItemBackground"没有效果. |
3
little_cup 2015-11-13 00:25:24 +08:00
@AtlantisZ 哪个 view 绑定 click 就给哪个设 selectableItemBackground 。当然注意不要被其他 view 在视觉上覆盖了。
|
4
AtlantisZ OP 在 onBindViewHolder 中
TypedValue typedValue = new TypedValue(); mActivity.getTheme().resolveAttribute(android.R.attr.selectableItemBackground, typedValue, true); Drawable background = getResources().getDrawable(typedValue.resourceId); // Drawable background = getResources().getDrawable(R.drawable.ripple_background); holder.rootView.setBackground(background); holder.rootView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startActivity(new Intent(getContext(), VideoDetailActivity.class)); // ToastUtils.showToast(mActivity, "av :: " + mRecommendList.get(position).av); } }); 还是没有用额. |
5
AtlantisZ OP @little_cup
在 onBindViewHolder 中 TypedValue typedValue = new TypedValue(); mActivity.getTheme().resolveAttribute(android.R.attr.selectableItemBackground, typedValue, true); Drawable background = getResources().getDrawable(typedValue.resourceId); // Drawable background = getResources().getDrawable(R.drawable.ripple_background); holder.rootView.setBackground(background); holder.rootView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startActivity(new Intent(getContext(), VideoDetailActivity.class)); } }); 还是没有用额. |
6
miao1007 2015-11-15 19:55:46 +08:00
这样写不会报错?
ClassNoFound 这个错误在低 API 下会出现 |
7
ybjaychou 2015-11-17 20:53:35 +08:00
我也是在愁这个问题,同样是在 RecyclerView 的 Item 里面,不知道怎么才能有点击效果,就算不是水纹也可以啊。。
顺便搭个车,就是怎么在 RecyclerView 里面做多选操作,然后 Toolbar 上面出现操作按钮,不知道有人做过没 |
8
ecmadao 2015-11-18 19:01:06 +08:00
同表示弄不出波纹点击效果,不知道是不是 SDK 版本的原因。
目前暂时通过 github 上一个开源项目实现那个效果了。。 https://github.com/balysv/material-ripple |
9
ecmadao 2015-11-18 19:05:55 +08:00
@ybjaychou
我自己是在 itemView 上加入了一个 checkBox ,平常处于隐藏状态,需要批量删除的适合,重新加载 RecyclerView 让 checkBox 显示。而 checkBox 的点击事件则是往一个数组里面扔 item 的 id ,那样就知道选了那些。 toolbar 的改变的话可以通过 onPrepareOptionsMenu 和 invalidateOptionsMenu()来改变,当然也可以通过 ActionMode.Callback 来实现 通过这种方法来实现的话需要对 checkBox 的点击进行标示优化,避免列表滑动的适合 checkBox 错误问题 |
11
AtlantisZ OP @ybjaychou
@ecmadao 参考 http://stackoverflow.com/questions/26961147/touch-feedback-with-recyclerview-and-cardview/29033353 解决了 RecyclerView 中 Item 无水波纹效果的问题额. |