前回enchant.jsの記事を書いておいてなんですが今回はAndroidの話
あっちいったりこっちいったりです。ふらふらです。
では、タイトルの通りSeekBarの扱い方について、今までSeekBarは使ったことがなかったので基本的な使い方になります。
やりたかったことは、フォントの調節をSeekBarで行う感じ。
とりあえず,xmlのレイアウトファイルは次のように
<seekbar android:id="@+id/fontSeekBar" android:layout_height="wrap_content" android:layout_margintop="50dp" android:layout_width="match_parent" android:max="10" android:progress="10"> </seekbar> <textview android:id="@+id/fontSize" android:layout_gravity="center_horizontal" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="フォント:○○" android:textsize="18sp"> </textview>
フォントの調節に使うので確認用にTextViewも載せます。
で,ソースコードはこんな感じ
SeekBar seekBar; TextView textView; seekBar = (SeekBar)dialog.findViewById(R.id.fontSeekBar); textView = (TextView)dialog.findViewById(R.id.fontSize); seekBar.setOnSeekBarChangeListener(new SeekBarChangeListener());
SeekBarChangeListenerはこちら
class SeekBarChangeListener implements OnSeekBarChangeListener{ @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { //つまみをドラッグしたとき textView.setText("フォント:"+seekBar.getProgress()); } @Override public void onStartTrackingTouch(SeekBar seekBar) { //つまみに触れたとき } @Override public void onStopTrackingTouch(SeekBar seekBar) { //つまみを離したとき } }
onProgressChangedの中でSeekBarの値を取得しTextViewに反映させてあげればseekBarの変化とtextViewが連動して見栄えがよくなります。 基本的にseekBar.getProgress()で現在の値を,setProgress()で値をセットしています。そんな難しくない。 気になったのは,値の設定方法。
xmlのandroid:max
とい項目はあってこれで最大値は決められるらしいのだが
最小値を設定するパラメータはない・・・・
え?なんで?って思ったんだけどなんかなさそう。
SeekBarの最低値は0なんだけどフォントサイズ0で設定するわけにもいかないので配列使って変換することにしました。
こんな感じに
//フォントで設定できる値 private static int Font[] = {8,12,14,16,18,20,22,24,28,32,36};
これでSeekBarを10段階に設定(max=10)して対応させてあげました。
最小値と最大値は下の画像のようになりました。