2012/07/24
Android の Custom View で Scrollbar を使用する
こういうやつ |
実現する方法はいろいろあると思いますが、android.view.View にはデフォルトで Scroll bar を表示するオプションがついているので、これを使ってやれば簡単です。
まず、Custom View の computeXXXScrollRange() を Override して実際のサイズを返すようにします。
@Override protected int computeHorizontalScrollRange() { return REAL_WIDTH; } @Override protected int computeVerticalScrollRange() { return REAL_HEIGHT; }
この他に computeXXXScrollOffset()、computeXXXScrollExtent() を Override することで、表示をカスタマイズすることが出来ます。
ただ、基本的にはデフォルトのままで良いでしょう。
各パラメータの関係は以下のとおりです。
また、カスタムビューをlayoutに記述する際、scrollbars アトリビュートを記述する必要があります。
(setXXXScrollBarEnabled(true); をコード中に記述しても大丈夫です)
<?xml version="1.0" encoding="utf-8"?> <merge xmlns:android="http://schemas.android.com/apk/res/android"> <com.kokufu.android.test.scrollablecustomview.ScrollableView android:layout_width="match_parent" android:layout_height="match_parent" android:scrollbars="horizontal|vertical" /> </merge>
今回、テスト用に作成したプロジェクトを GitHub にアップしましたので、ご自由にお使いください。
2013/10/29 追記
諸事情により GitHub から Bitbucket に移動しました。
$ git clone https://kokufu@bitbucket.org/kokufu/ScrollableCustomViewExperiment.git
また、以下に書いてあったのですが、この方法を ViewGroup (FrameLayout とか) に対して使用する場合は、コンストラクタに
setWillNotDraw(false);
を書いておかないといけないようです。Android: Enable Scrollbars in Custom View - Stack Overflow
0 件のコメント:
コメントを投稿