コンピュータクワガタ

かっぱのかっぱによるコンピュータ関連のサイトです

Androidアプリ入門 No.11 EditTextのActivityからの操作

今風に書き直した記事がありますので、合わせて参照ください。
blog.webarata3.link

EditText

Activityからの操作

EditTextの主な操作はそのテキストの取得だと思われる。何らかのイベントとともにそれが起きるのが普通である。今回はテキストを入力するたびにTextViewにその文字を装飾して表示する例を以下に示す。まず、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"
    android:background="#ffffff"
    >
    <EditText
        android:id="@+id/editText"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="何か入力"
        android:textSize="16sp"
        />
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        >
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="#000"
            android:textSize="16sp"
            android:text="結果テキスト:"
            android:textStyle="normal"
            />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/textView"
            android:textColor="#000"
            android:textSize="16sp"
            android:textStyle="normal"
            />
    </LinearLayout>
</LinearLayout>

次に、Java側のMainActivity.javaを示す。

package sample.at;

import android.app.Activity;
import android.graphics.Color;
import android.graphics.Typeface;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends Activity {
    private TextView textView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        textView = (TextView) findViewById(R.id.textView);
        textView.setTextColor(Color.argb(255, 255, 0, 0));
        textView.setTypeface(Typeface.MONOSPACE);

        EditText editText = (EditText) findViewById(R.id.editText);
        editText.addTextChangedListener(tw);

    }

    /**
     * テキストの変更イベント
     */
    private TextWatcher tw = new TextWatcher() {
        @Override
        public void afterTextChanged(Editable s) {
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            textView.setText(s);
        }
    };
}

実行結果は以下のようになる。入力した文字列がそのままTextViewに表示されている。