androidでシークバーを使ってみる
評価とかを指定する場合などに使用できそう
面白いとか痛いとか
ボタンで押下とかよりは面倒だけど明確に高いか低いかを分ける場合に使用できるかも
実装
画面
Activity
package jp.mshige1979.app.sampleappseekbar1; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.SeekBar; import android.widget.TextView; import java.util.ArrayList; import java.util.List; public class MainActivity extends ActionBarActivity { private TextView txt1; private SeekBar seekBar; private List list; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); list = new ArrayList(); list.add("痛みなし"); list.add("ちょっと痛い"); list.add("歩きにくい"); list.add("痛い(´・ω・`)"); list.add("立つのもしんどい"); list.add("痛くて寝ることもできません(T_T)"); // item txt1 = (TextView)findViewById(R.id.txt1); seekBar = (SeekBar)findViewById(R.id.seekBar); // 初期文字 txt1.setText("痛みなし"); // シークバー設定 seekBar.setMax(5); seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener(){ @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser){ // ツマミを変更した場合 txt1.setText(String.valueOf(list.get(seekBar.getProgress()))); } @Override public void onStartTrackingTouch(SeekBar seekBar) { // ツマミに触れたときに呼ばれる } @Override public void onStopTrackingTouch(SeekBar seekBar) { // ツマミを離したときに呼ばれる } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }
※setOnSeekBarChangeListenerで値の変化を検知する
↓
※エミュレータではこんな感じ
所感
textviewを中央寄せにするには「gravity」という項目で指定しないと中央寄せにならないようです。
ちょっとこれは紛らわしいw