◆ 横スクロール
HorizontalScrollViewもScrollViewと同様に、1つのオブジェクトに対してのみ使用可能ですので、LinearLayoutをスクロールさせるようにします。LinearLayoutの中に、縦40ピクセル・横80ピクセルのTextViewを横に並べていきます。画面の横幅は320ピクセルですから、4つでいっぱいになり、5つめからは見えなくなります。横幅以上のサイズになると、スクロールバーが表示されます。
Androidプロジェクトの設定
プロジェクト名: HorizontalScrollViewTest1a ビルドターゲット: Android 2.1-update1 アプリケーション名: HorizontalScrollViewTest1a パッケージ名: jp.co.triware.samples.HorizontalScrollViewTest1a アクティビティーの作成: HorizontalScrollViewTest1aActivity 最小SDKバージョン: 7
HorizontalScrollViewTest1aActivity.java
package jp.co.triware.samples.HorizontalScrollViewTest1a;
import android.app.Activity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.ViewGroup;
import android.widget.HorizontalScrollView;
import android.widget.LinearLayout;
import android.widget.TextView;
public class HorizontalScrollViewTest1aActivity extends Activity {
private static final int itemHeight = 40;
private static final int itemWidth = 80;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout llOutside = new LinearLayout(this);
llOutside.setOrientation(LinearLayout.HORIZONTAL);
llOutside.setGravity(Gravity.CENTER_HORIZONTAL);
HorizontalScrollView hsv = new HorizontalScrollView(this);
hsv.setLayoutParams(new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
llOutside.addView(hsv);
LinearLayout llInside = new LinearLayout(this);
llInside.setOrientation(LinearLayout.HORIZONTAL);
llInside.setGravity(Gravity.CENTER_HORIZONTAL);
hsv.addView(llInside);
for (int i = 0; i < 10; i ++) {
TextView tv = new TextView(this);
tv.setHeight(itemHeight);
tv.setWidth(itemWidth);
tv.setText("Text " + i);
llInside.addView(tv);
}
setContentView(llOutside);
}
}
実行結果
最初の状態です。TextViewの下に表示されている線がスクロールバーです。
真ん中あたりまでスクロールしました。
一番右までスクロールしました。
◆ 縦横スクロール
HorizontalScrollViewとScrollViewと組み合わせたサンプルを作ってみましょう。
縦方向のLinearLayoutをScrollViewで縦スクロール、そのLinearLayoutの中に横方向のLinearLayoutを作ってHorizontalScrollViewで横スクロールするようにします。
イメージとしてはこのような感じです。
<ScrollView>
<LinearLayout> … 縦スクロールする内容
<HorizontalScrollView>
<LinearLayout> … 横スクロールする内容
・・・
</LinearLayout>
</HorizontalScrollView>
</LinearLayout>
</ScrollView>
Androidプロジェクトの設定
プロジェクト名: HorizontalScrollViewTest1b ビルドターゲット: Android 2.1-update1 アプリケーション名: HorizontalScrollViewTest1b パッケージ名: jp.co.triware.samples.HorizontalScrollViewTest1b アクティビティーの作成: HorizontalScrollViewTest1bActivity 最小SDKバージョン: 7
HorizontalScrollViewTest1bActivity.java
package jp.co.triware.samples.HorizontalScrollViewTest1b;
import android.app.Activity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.ViewGroup;
import android.widget.HorizontalScrollView;
import android.widget.LinearLayout;
import android.widget.ScrollView;
import android.widget.TextView;
public class HorizontalScrollViewTest1bActivity extends Activity {
private static final int itemHeight = 40;
private static final int itemWidth = 80;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout llOutside = new LinearLayout(this);
llOutside.setOrientation(LinearLayout.VERTICAL);
llOutside.setGravity(Gravity.CENTER_HORIZONTAL);
ScrollView sv = new ScrollView(this);
sv.setLayoutParams(new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
llOutside.addView(sv);
LinearLayout llVertical = new LinearLayout(this);
llVertical.setOrientation(LinearLayout.VERTICAL);
llVertical.setGravity(Gravity.CENTER_HORIZONTAL);
sv.addView(llVertical);
for (int i = 0; i < 20; i ++) {
HorizontalScrollView hsv = new HorizontalScrollView(this);
hsv.setLayoutParams(new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
llVertical.addView(hsv);
LinearLayout llHorizontal = new LinearLayout(this);
llHorizontal.setOrientation(LinearLayout.HORIZONTAL);
llHorizontal.setGravity(Gravity.CENTER_HORIZONTAL);
hsv.addView(llHorizontal);
for (int j = 0; j < 10; j ++) {
TextView tv = new TextView(this);
tv.setHeight(itemHeight);
tv.setWidth(itemWidth);
tv.setText("Text " + (i * 10 + j));
llHorizontal.addView(tv);
}
}
setContentView(llOutside);
}
}
実行結果
最初の状態は、縦スクロール部は一番上、横スクロール部は一番左の部分を表示しています。
縦スクロールは真ん中あたりで、いくつか横スクロール。
一番下まで縦スクロールした状態。






0 件のコメント:
コメントを投稿