回答編集履歴

2

質問に合わせて一部説明を変更

2021/11/05 11:47

投稿

jimbe
jimbe

スコア12648

test CHANGED
@@ -122,6 +122,6 @@
122
122
 
123
123
 
124
124
 
125
- なお、smoothScrollBy を使うにしてもその値を自動で求められないかとやっていた時に、なぜか width=150 にすると No.1 と No.8 が中央に出来ない(しようとするとNo.2/No7に戻される)事象が出ました。
125
+ なお、smoothScrollBy を使うにしてもその値を自動で求められないかとやっていた時に、なぜか width=150 にすると No.1 と No.7 が中央に出来ない(しようとするとNo.2/No6に戻される)事象が出ました。
126
126
 
127
127
  タッチ操作でも同様でしたのでボタン等の問題では無く LinearLayoutManager もしくは ItemDecoration 関係のようですが、今のところ問題点の想像もついていません。

1

smoothScrollBy 版追加

2021/11/05 11:47

投稿

jimbe
jimbe

スコア12648

test CHANGED
@@ -63,3 +63,65 @@
63
63
  ```
64
64
 
65
65
  としてみてください。
66
+
67
+
68
+
69
+ ----
70
+
71
+
72
+
73
+ MainActivity に以下のメソッドを追加し
74
+
75
+ ```java
76
+
77
+ private int calcPixelFromDp(int dp){
78
+
79
+ DisplayMetrics metrics = getResources().getDisplayMetrics();
80
+
81
+ return (int)(dp * metrics.density);
82
+
83
+ }
84
+
85
+ ```
86
+
87
+ 各ボタンは以下のようにすると一応動作しました。
88
+
89
+ -200,200 のところは、それぞれ recycler_view のトップコンテナの width の値(450?)から負数(-450),正数(450)としてください。
90
+
91
+ こちらでは 200 でテストしたのでこの値となっています。
92
+
93
+ ```java
94
+
95
+ left_button.setOnClickListener(new View.OnClickListener() {
96
+
97
+ @Override
98
+
99
+ public void onClick(View view) {
100
+
101
+ recyclerView.smoothScrollBy(calcPixelFromDp(-200), 0);
102
+
103
+ }
104
+
105
+ });
106
+
107
+
108
+
109
+ right_button.setOnClickListener(new View.OnClickListener() {
110
+
111
+ @Override
112
+
113
+ public void onClick(View view) {
114
+
115
+ recyclerView.smoothScrollBy(calcPixelFromDp(200), 0);
116
+
117
+ }
118
+
119
+ });
120
+
121
+ ```
122
+
123
+
124
+
125
+ なお、smoothScrollBy を使うにしてもその値を自動で求められないかとやっていた時に、なぜか width=150 にすると No.1 と No.8 が中央に出来ない(しようとするとNo.2/No7に戻される)事象が出ました。
126
+
127
+ タッチ操作でも同様でしたのでボタン等の問題では無く LinearLayoutManager もしくは ItemDecoration 関係のようですが、今のところ問題点の想像もついていません。