
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(); mAtivity.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 无水波纹效果的问题额. |