◆ TextViewとCheckBox
まず最初にTextViewとCheckBoxを表示するだけのサンプルプログラムを作ってみます。
Androidプロジェクトの設定
CheckBoxTest1a.java
プロジェクト名: CheckBoxTest1a ビルドターゲット: Android 2.1-update1 アプリケーション名: CheckBoxTest1a パッケージ名: jp.co.triware.samples.CheckBoxTest1a アクティビティーの作成: CheckBoxTest1a 最小SDKバージョン: 7
package jp.co.triware.samples.CheckBoxTest1a;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.CheckBox;
import android.widget.TextView;
import android.widget.Toast;
public class CheckBoxTest1a extends Activity {
private static final String TAG = "CheckBoxTest1a";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView tv = (TextView)findViewById(R.id.checkboxtest_tv);
CheckBox cb = (CheckBox)findViewById(R.id.checkboxtest_cb);
String buf = "TextView: " + tv.getTextSize() + " #" + Integer.toHexString(tv.getCurrentTextColor());
buf += "\nCheckBox: " + cb.getTextSize() + " #" + Integer.toHexString(cb.getCurrentTextColor());
Toast.makeText(this, buf, Toast.LENGTH_LONG).show();
Log.d(TAG, buf);
}
}
TextViewとCheckBoxのテキストのサイズと色を、ToastとLogで確認します。main.xml
<?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"
>
<TextView
android:id="@+id/checkboxtest_tv"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="チェックボックスのテストです。"
/>
<CheckBox
android:id="@+id/checkboxtest_cb"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="チェックしてください。"
/>
</LinearLayout>
実行結果
TextViewとCheckBoxでは、テキストのサイズも色も異なります。具体的な数値はToastで表示されている通りです。
◆ TextViewとCheckBoxを同じサイズ・色に変更する
このままではバランスが悪いので、TextViewとCheckBoxのサイズを統一することにします。
チェックボックスの大きさを変更するにはリソースを作らなくてはなりませんので、この方法は別の機会にしましょう。
今回はテキストサイズが小さいTextViewをCheckBoxのサイズに合わせて見映えをよくします。また、色はCheckBoxをTextViewに合わせました。
Androidプロジェクトの設定
CheckBoxTest1b.java
プロジェクト名: CheckBoxTest1b ビルドターゲット: Android 2.1-update1 アプリケーション名: CheckBoxTest1b パッケージ名: jp.co.triware.samples.CheckBoxTest1b アクティビティーの作成: CheckBoxTest1b 最小SDKバージョン: 7
package jp.co.triware.samples.CheckBoxTest1b;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.CheckBox;
import android.widget.TextView;
import android.widget.Toast;
public class CheckBoxTest1b extends Activity {
private static final String TAG = "CheckBoxTest1b";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView tv = (TextView)findViewById(R.id.checkboxtest_tv);
CheckBox cb = (CheckBox)findViewById(R.id.checkboxtest_cb);
// テキストのサイズと色を調整
tv.setTextSize(cb.getTextSize());
cb.setTextColor(tv.getCurrentTextColor());
String buf = "TextView: " + tv.getTextSize() + " #" + Integer.toHexString(tv.getCurrentTextColor());
buf += "\nCheckBox: " + cb.getTextSize() + " #" + Integer.toHexString(cb.getCurrentTextColor());
Toast.makeText(this, buf, Toast.LENGTH_LONG).show();
Log.d(TAG, buf);
}
}
main.xml は、CheckBoxTest1aのものと同じです。
実行結果
見映えがよくなりましたね。
◆ CheckBoxの動き
次はいよいよチェックボックスをON/OFFした時の動きを実装します。サンプルプログラムでは、"ON"/"OFF"の状態はToastとLogで出力しています。
Androidプロジェクトの設定
CheckBoxTest1c.java
プロジェクト名: CheckBoxTest1c ビルドターゲット: Android 2.1-update1 アプリケーション名: CheckBoxTest1c パッケージ名: jp.co.triware.samples.CheckBoxTest1c アクティビティーの作成: CheckBoxTest1c 最小SDKバージョン: 7
package jp.co.triware.samples.CheckBoxTest1c;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.TextView;
import android.widget.Toast;
public class CheckBoxTest1c extends Activity {
private static final String TAG = "CheckBoxTest1c";
private Toast myToast = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
myToast = Toast.makeText(this, "", Toast.LENGTH_SHORT);
TextView tv = (TextView)findViewById(R.id.checkboxtest_tv);
CheckBox cb = (CheckBox)findViewById(R.id.checkboxtest_cb);
// テキストのサイズと色を調整
tv.setTextSize(cb.getTextSize());
cb.setTextColor(tv.getCurrentTextColor());
// チェックボックスの状態が変わった時の処理
cb.setOnCheckedChangeListener(new OnCheckedChangeListener() {
// @Override // JDK1.5ではビルドエラー
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
myToast.cancel();
if (isChecked == true) {
myToast.setText("ON");
Log.d(TAG, "ON");
} else {
myToast.setText("OFF");
Log.d(TAG, "OFF");
}
myToast.show();
}
});
}
}
main.xml は、CheckBoxTest1aのものと同じです。
「EditText」で使ったCheckBoxでは、setOnClickListener()メソッドで、「チェックボックスがクリックされた時」の処理(onClick())を設定しました。
今回は「チェックボックスの状態が変わった時」に処理するように、setOnCheckedChangeListener()メソッドを使ってonCheckedChanged()を設定しました。
onClick()ではチェックボックスの状態を取得するためにisChecked()を呼び出す必要がありましたが、onCheckedChanged()では引数isCheckedを参照することで判定できます。
実行結果




0 件のコメント:
コメントを投稿