【发布时间】:2018-03-12 00:53:09
【问题描述】:
我正在开发一个应用程序,如果用户从微调器中选择一些值,我需要一个微调器,那么我需要平滑滚动该特定位置并突出显示该位置的项目。我已经为此做了一些事情,我有一个方法可以突出显示该位置,如果视图可见,如果视图不可见,则它不会突出显示。所以,我面临着这样的一些问题。
这是我从微调器获得位置的地方
versesSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
final int possition = (int) versesSpinner.getSelectedItemId();
recyclerView.smoothScrollToPosition(possition);
setBackgroundColor(possition);
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
这就是我突出显示项目的方法
public void setBackgroundColor(int position) {
for (int i = 0; i < versesList.size(); i++) {
View view = mLayoutManager.findViewByPosition(i);
try {
if (view != null) {
if (i == position)
view.setBackgroundColor(Color.parseColor("#504cbee7"));
else
view.setBackgroundColor(Color.WHITE);
}
} catch (Exception e) {}
}
}
这里的问题是在平滑滚动方法到达特定项目之前调用setBackground() 方法。
仅当视图可见且视图不为空时才会突出显示。
请告诉我是否有其他方法可以实现这一点,否则请告诉我如何确定平滑滚动到位置是否已到达特定项目
我希望它有意义。
【问题讨论】:
标签: android android-recyclerview highlighting smooth-scrolling