さて、ユーザーがスワイプしてさまざまな「ページ」を表示できる水平スクロールビューを持つアクティビティを構築しようとしています。私の考えでは、これらの「ページ」はビューになります。以下は私のアイデアのモックアップです(動作するかどうかを確認するため)
私はこれを次のように実験しました:
私のコンテンツビューはスクロールビューに設定されています。(これが間違ったアプローチかどうかは不明)
スクロールビューを作成し、次のようにビューを配置します。
private void setupScrollView()
{
Display display = getWindowManager().getDefaultDisplay();
DisplayMetrics outMetrics = new DisplayMetrics ();
display.getMetrics(outMetrics);
float density = getResources().getDisplayMetrics().density;
float dpHeight = outMetrics.heightPixels / density;
float dpWidth = outMetrics.widthPixels / density;
int width = (int)MeasureUtils.convertDpToPixel(dpWidth, getApplicationContext());
int height = (int)MeasureUtils.convertDpToPixel(dpHeight, getApplicationContext());
_scrollView = new HorizontalScrollView(getApplicationContext());
_scrollView.setBackgroundColor(Color.CYAN);
_scrollView.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
Log.i("DEBUG", "Screen dp width = " + dpWidth + " screen dp height = " + dpHeight);
TextView view = new TextView(getApplicationContext());
view.setBackgroundColor(Color.RED);
view.setText("TEST");
view.setX(0); // Start at the left of the scrollview.
view.setWidth(width); // Size it so that it fills to the right of the scrollview.
TextView view2 = new TextView(getApplicationContext());
view2.setBackgroundColor(Color.GREEN);
view2.setText("TEST2");
view2.setX(width); // Start the second "page/view" offscreen to the right where i can scroll to it
view.setWidth(width); // Fill the screen width
LinearLayout layout = new LinearLayout(getApplicationContext());
layout.setBackgroundColor(Color.MAGENTA);
layout.addView(view);
layout.addView(view2);
_scrollView.addView(layout);
}
上記のアイデアは、画面を占有し、ページを表すビューが表示されるということです。このビューの色は「RED」である必要があります。次に、右に水平にスクロールすると、次のページを表す 2 番目のビュー (view2) が表示されます。このビューの色は「GREEN」である必要があります。これは起こりません。画面の 1/3 または 1/2 が view1 であり、linearlayout がほぼ画面全体を占めているように見えます (スクロールビューからの CYAN がにじみ出る右端に少し隙間があります)。
私はこれに間違った方法で取り組んでいますか、そして/または私が行っている方法でこれを機能させることは可能ですか?