■android.widget.CheckedTextView


CheckedTextViewというと他のosのプログラミング環境では聞いたことのない馴染みのないコントロールですが、こういう感じのものです



そういえばスマートフォンでは見たことありますよね。

このコントロール、setChecked(true)があって、ぱっと見、trueを設定すると勝手にチェックマークが付きそうな感じがしますが、
ところがどっこい、チェックマークの画像は自分でつけなければなりません。
まず、チェックマークの画像を用意します。



その画像をjpgやpng形式などでリソースのdrawableフォルダにコピーします。
今回はcheck.jpgで保存しました。

\AndroidStudioProjects\XXXX\app\src\main\res\drawable\check.jpg

png形式だと透過画像でももちろん動きます。
これによりプログラムから参照することができるようになります。
プログラムからは。XXX.setCheckMarkDrawable(R.drawable.check)により画像を表示して
XXX.setCheckMarkDrawable(null)で画像を消します。


その画像をJavaで表示してみましょう。
画面上にリソースでCheckedTextViewとボタンを張り付けます
その後に次のプログラムを走らせてみます。



public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        android.widget.Button button=(android.widget.Button)findViewById(R.id.button);
        button.setOnClickListener(new button_listener());
        android.widget.CheckedTextView ctv=(android.widget.CheckedTextView)findViewById(R.id.checkedTextView);
        ctv.setText("check abcdefghijklmnopqrstuvwxyz 1234567890");
        ctv.setCheckMarkDrawable(R.drawable.check);
        ctv.setCheckMarkDrawable(null);

    }
    private class button_listener implements android.view.View.OnClickListener {
        public void onClick(android.view.View view) {
            android.widget.CheckedTextView ctv=(android.widget.CheckedTextView)findViewById(R.id.checkedTextView);

            if(ctv.isChecked()){
                ctv.setChecked(false);
                ctv.setCheckMarkDrawable(null);
            }else{
                ctv.setChecked(true);
                ctv.setCheckMarkDrawable(R.drawable.check);
            }
        }
    }



上のプログラムを動かしてボタンを押すとチェックマークがつくはずです。
画面が表示される前に一度画像を表示してその後引数にnullを渡して画像を消しています。
こうすることにより画像が表示されたときに縦横サイズが変わり、レイアウトが崩れるのを防いでいます。



▲トップページ > android