【Android】SeekBarのつまみ部分でのみ値を変えられるようにする

AndroidのSeekBarはバーの部分もタッチできて値が変わるようになっているが、
画面をスワイプなどしたときにタッチを受けて値が変わってしまう時がある。iOSの場合はつまみにしかあたり判定がない。

色々調べたのだがこれといった情報もなく、進展しなかったのだが結局、ローテクな方法で解決できたのでメモ。(例によって自分が経験不足というオチ?)

sb = (SeekBar) findViewById(R.id.seekbar);
sb.setOnTouchListener(new OnTouchListener() {
			public boolean onTouch(View v, MotionEvent event) {
				Boolean b;
				if ((int) ((event.getX() / sb.getWidth()) * 100) <= sb
						.getProgress() + 12
						&& (int) ((event.getX() / sb.getWidth()) * 100) >= sb
								.getProgress() - 12) {
					b = false;
				} else {
					b = true;
				}
				return b;
			}
		});

関連する記事:

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

名前 *