我试图使用RecyclerView
制作粘性图片的水平列表,并且我希望按像素移动它们'偏移scrollToPositionWithOffset
。我认为将0
作为position
传递,将我想要移动的像素作为offset
传递给右/左。
但它不起作用,列表保持不变,未展开,它不会移动。这是我的实施:
final LargeImageAdapter mLargeImageAdapter = new LargeImageAdapter(this);
linearLayoutManager = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false);
recyclerView.setLayoutManager(linearLayoutManager);
recyclerView.setAdapter(mLargeImageAdapter);
seekBar = (SeekBar)findViewById(R.id.seekBar);
seekBar.setMax(7000);
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
int scrollToDX = progress;
((LinearLayoutManager)recyclerView.getLayoutManager()).scrollToPositionWithOffset(0, scrollToDX);
// tried invoking also linearLayoutManager instead getLayoutManager.
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
我做错了什么?
非常感谢。
问候。
圣拉斐尔。
答案 0 :(得分:3)
我终于使用了:
@patch('json.dump')
@patch('builtins.open', new_callable=mock_open())
def test_save_data_to_file(self, m, m_json):
self.mc.save_data_to_file(self.data)
# simple assertion that your open was called
m.assert_called_with('/tmp/data.json', 'w')
# assert that you called m_json with your data
m_json.assert_called_with(self.data, m.return_value.__enter__.return_value)
设置recyclerView.scrollBy(int offsetX, int offsetY);
,现在可以正常使用。
我不明白函数offsetY = 0
的效用是什么。
答案 1 :(得分:2)
我有类似的问题。我的问题是我的recyclerview与其父布局的大小不同。我通过将回收者视图宽度和高度设置为match_parent
来解决它。我不知道为什么会发生这种情况。
答案 2 :(得分:0)
对你的第一个问题的迟到答案,以及对答案的补充:
您的方法可以更好地满足您的个人需求,因为scrollToPositionWithOffset
无意做您想做的事。
[...]已解决的布局开始取决于[...] getLayoutDirection(android.view.View)[...]
这意味着它将在布局方向上垂直偏移滚动目标位置,在您的情况下垂直。
我不明白该功能的用途是什么 scrollToPositionWithOffset。
它不仅可以滚动到列表中的给定项目,还可以将其放置在更“可见”或方便的位置。