我正在使用recyclerview和水平线性布局管理器。我想改变recyclerview项目的颜色,当项目被捕捉到中间时。
所以我使用了LinearSnapHelper。
目前,之前拍摄的每件物品都保留了拍摄的背景色。所以,我做了一个全局变量SnapdPosition,并将其设置为0,所以默认情况下,recyclerview的第一项将被捕捉。
然后我在我的适配器的onBindViewHolder中调用了那个snapesdPotion,并将项目的颜色更改为默认的,除了一个与已抓取项目的位置相同的项目。
JAVAlang.IllegalStateException:当RecyclerView正在计算布局或滚动android时,无法调用此方法。支持v7。小装置。回收视图
片段里面的代码:
val snapHelper: LinearSnapHelper = LinearSnapHelper()
var snappedPosition: Int = 0
addressRecyclerView = view.findViewById<RecyclerView>(R.id.address_recycler_view).apply {
setHasFixedSize(true)
layoutManager = viewManager
adapter = viewAdapter
}
snapHelper.attachToRecyclerView(addressRecyclerView)
addressRecyclerView.onFlingListener = snapHelper
itemOffsetDecoration = ItemOffsetDecoration(context, R.dimen.address_recyclerview_padding)
addressRecyclerView.addItemDecoration(itemOffsetDecoration)
addressRecyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() {
override fun onScrollStateChanged(recyclerView: RecyclerView?, newState: Int) {
if (newState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE) {
val centerView = snapHelper.findSnapView(viewManager)
if (centerView != null) {
snappedPosition = addressRecyclerView.getChildAdapterPosition(centerView)
}
}
}
})
onBindViewHolder中的代码
addressList[position].let {
if (position == fragment.snappedPosition){
holder.itemViewLayout.setBackgroundResource(R.drawable.payment_button_active)
notifyItemChanged(position)
} else {
holder.itemViewLayout.setBackgroundResource(R.drawable.payment_button_inactive)
notifyItemChanged(position)
}
}
我想实现的是类似于这个图像示例:
更新:颜色变化变体的代码示例(仍然不工作):
addressRecyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() {
override fun onScrollStateChanged(recyclerView: RecyclerView?, newState: Int) {
if (newState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE) {
val centerView = snapHelper.findSnapView(addressRecyclerView.layoutManager)
if (centerView != null) {
for(item in 0 until addressRecyclerView.layoutManager.childCount){
val holder: RecyclerView.ViewHolder = addressRecyclerView.findViewHolderForAdapterPosition(item)
holder.itemView.setBackgroundResource(R.drawable.payment_button_inactive)
}
centerView.setBackgroundResource(R.drawable.payment_button_active)
}
}
}
})
尝试以下操作以跟踪当前的快照视图,设置适当的背景,并在移动RecyclerView
时将其清除。这样可以避免对适配器进行修改。
mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
if (newState == RecyclerView.SCROLL_STATE_IDLE) {
View view = mSnapHelper.findSnapView(recyclerView.getLayoutManager());
view.setBackgroundColor(getResources().getColor(android.R.color.holo_green_light));
mLastSnappedView = view;
} else if (mLastSnappedView != null) {
mLastSnappedView.setBackgroundColor(getResources().getColor(android.R.color.white));
mLastSnappedView = null;
}
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
}
});
我正在使用来使我的中的项目在屏幕上“对齐”(我的卡片占据了屏幕的大部分,所以我希望它们在每次刷/抛/滚动时都对齐并填充屏幕)。 我在苦苦思索如何让卡片更快地卡入位。我已经尝试创建自定义的(并编辑或中的方法),以及自定义的(并编辑fling方法)。但没有任何东西影响卡“卡”入位的速度。 我想问题是我真的不明白是如何将卡片“滚动”到正确的位置的。它似乎没有使用的或方法。
我已经被困在这个问题上几天了,真的需要一些帮助和理解如何用DiffUtil设置RecylerView(RV),似乎无论我尝试什么,我都无法让RV更新。我会浏览我所拥有的,希望有人能解释一下我做错了什么。 应用程序启动 创建视图模型, 然后在ViewModel中填充LiveDataList。 LayoutManager和ListAdapter应用于RV 为什么在LiveDataList中添加或删除一
这是我的应用,问题出在哪里 我希望我的物品能像这个应用一样合身 我正在使用带有的。我的问题是,当其中一个项目具有更长的文本时,您可以在图像中看到网格项的高度不相同。我正在从Firebase加载数据,并在列表具有数据时通知。我尝试了一切,但找不到一个解决方案来自动适应项目,如第二张图片所附。有什么帮助吗? 这是我的recyclerview项目布局
本文向大家介绍树莓派动作捕捉抓拍存储图像脚本,包括了树莓派动作捕捉抓拍存储图像脚本的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了树莓派动作捕捉抓拍存储图像的具体代码,供大家参考,具体内容如下 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。
我开始尝试,我感到惊讶的是,更改
我想把我的混合应用程序的一些截图itunes自动连接。我正在运行Ubuntu 14.04. chromeDrive2.15.322448 使用Selenium和Xvfb自动截图很容易。但是要得到视网膜截图并不容易。 我用更高的dpi启动了我的Xvfb: 当我检查显示信息时,一切似乎都是正确的: 然后我像这样启动我的chromedriver 在完成了一些其他无聊的代码后,我截图: 这不工作。屏幕截图