アンケートなどで必要になってくるチェックボタンの作成していきます。
チェックボタンの仕組みとしては、ほとんどトグルボタンと同じ工程となります。
アンドロイドでは、
1、マウスクリックで切り替わる。
2、現在のトグルがどちらに切り替わっているかの取得。
の2点をチェックボックスが自動で行ってくれます。
作り方も簡単にできるようになっていますので、
この機会にチェックボタンの特性と組み込み方を覚えてしまいましょう。
作り方
最初にcButtonというプロジェクトを作成します。
作成が完了したら、main.xmlのファイルを開きます。
※main.xmlでは【graphical layout】で作業を行うと簡単にレイアウトの変更ができます。
TextViewクラスがデフォルトで中に配置されていると思いますが、削除をします。
次に、項目の中からCheckBoxをドラッグして、main.xmlの中にいれます。
今回のトグルボタンの確認の為にTextFiedクラスを新たに作成をして追加して、LinerLayoutの中にいれます。
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <CheckBox android:text="CheckBox" android:id="@+id/checkBox1" android:layout_width="wrap_content" android:layout_height="wrap_content"></CheckBox> <TextView android:text="TextView" android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView> </LinearLayout>
上記のようなmain.xmlになっているかと思います。もしidなどがなければ必要になりますので、追加をしておいてください。
ここで一度パブリッシュをしてみてください。
パブリッシュされたアプリでボタンをクリックをすると、ONとOFFが切り替わるのが分かると思います。自動でトグル式のボタンが作成されました。
次にこの切り替えをスクリプトで利用してみましょう。
まず、最初に行うのは配置したオブジェクトを読み込む為の変数を用意します。
private CheckBox _checkbox; private TextView _textView;
次にコンストラクタで、この変数にオブジェクトを読み込みます。
_checkbox = (CheckBox)findViewById(R.id.checkBox1); _textView = (TextView)findViewById(R.id.textView1);
クリックイベントを取得する為には、CheckBox.OnCheckedChangeListenerをimplementsする必要があり、イベントをtoggleButtonに結びつける必要があります。
イベントが取得された際にonCheckedChangedが実行されますが、引数の値として、1つ目がそのクリックされたオブジェクト、2つ目が現在のCheckBoxのbooleanでの値になります。
package andante.in.android.cbox; import android.app.Activity; import android.os.Bundle; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.TextView; public class cBox extends Activity implements CheckBox.OnCheckedChangeListener{ /** Called when the activity is first created. */ private CheckBox _checkbox; private TextView _textView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); _checkbox = (CheckBox)findViewById(R.id.checkBox1); _textView = (TextView)findViewById(R.id.textView1); _checkbox.setOnCheckedChangeListener(this); } public void onCheckedChanged(CompoundButton _tbutton,boolean _checked){ if(_checked){ _textView.setText("これはON"); }else{ _textView.setText("これはOFF"); } } }
上記をパブリッシュすると、トグルスイッチの外部にある、TextViewの中の値も現在のオフの値かどうかによって、変化するはずです。
またボタンには下記の処理が含まれている。
値をセットする。
_btn.setChecked(true);
スイッチを切り替える。
_btn.toggle();
オンオフの取得
_btn.isChecked()