EditText クラス( その 12 )

今日から EditText クラスの各種メソッドを見て行きます。

Android Developers -EditText-
http://developer.android.com/reference/android/widget/EditText.html

今日は EditText のテキストと画像の同時表示を見てみます。
以下、サンプルです。

public class HellowAndroidActivity extends Activity {
    private final int MP = LinearLayout.LayoutParams.MATCH_PARENT; 
    private final int WC = LinearLayout.LayoutParams.WRAP_CONTENT; 
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        LinearLayout layout = new LinearLayout(this);
        layout.setOrientation(LinearLayout.VERTICAL);
        setContentView(layout);

        EditText editText = new EditText(this);
        editText.setText("button");
        editText.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_launcher, R.drawable.ic_launcher, R.drawable.ic_launcher, R.drawable.ic_launcher);
        layout.addView(editText);
    }
}

setCompoundDrawablesWithIntrinsicBounds メソッドを使用してます。
このメソッドは、指定の範囲にリソースを指定して描画するメソッドでした。
今回は、テキスト編集領域の上下左右に画像を貼り付けてます。

EditText でテキストを入力していっても、画像の領域にテキストが侵食する事はありません。
テキストの編集は、あくまで画像の表示領域内です。テキストの編集領域が拡張されても、画像の
表示領域が外に押し出されます。また、画像の表示領域が画面端に達するとテキストの表示が折り
返されて表示されるようになります。

EditText クラス( その 11 )

今日から EditText クラスの各種メソッドを見て行きます。

Android Developers -EditText-
http://developer.android.com/reference/android/widget/EditText.html

今日は EditText の背景リソース設定について見てみます。
以下、サンプルです。

public class HelloWorldActivity extends Activity {
    private final int MP = TableLayout.LayoutParams.MATCH_PARENT; 
    private final int WC = TableLayout.LayoutParams.WRAP_CONTENT; 
    
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        LinearLayout layout = new LinearLayout(this);
        setContentView(layout);
                        
        EditText editText = new EditText(this);
        editText.setText("hoge");
        editText.setTextColor(Color.RED);
        editText.setBackgroundResource(R.drawable.ic_launcher);
        layout.addView(editText);
    }
}

setBackgroundResource メソッドで、リソース ID を指定します。
背景にリソースとなる画像を貼り付けることができます。
ちょっと見づらいのでフォントカラーを赤にしてます。
単純に貼り付けただけなので、テキストを入力していくと EditText が伸張されて
いくのに従って、画像も伸びていきますね。

開設 100 日となりました

Android プログラミング日進月歩を開設して 100 日となりました。
正確に言えば 101 になってました。。。

ごらんになって下さっている方々、ありがとうございます。

いつの間にか、タイトルが変わっていたり
いつの間にか、100 日連続更新していたり
いつの間にか、Android のメソッド紹介ブログになっていたり…

と色々当初の目標と違っていますが、これからも細々と続けて行きたいと思います。
よろしくお願いします

EditText クラス( その 10 )

今日から EditText クラスの各種メソッドを見て行きます。

Android Developers -EditText-
http://developer.android.com/reference/android/widget/EditText.html

今日はテキストの省略表示を見てみます。
以下、サンプルです。

public class HelloAndroidActivity extends Activity {
    private final int MP = LinearLayout.LayoutParams.MATCH_PARENT; 
    private final int WC = LinearLayout.LayoutParams.WRAP_CONTENT; 
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        LinearLayout layout = new LinearLayout(this);
        layout.setOrientation(LinearLayout.VERTICAL);
        setContentView(layout);

        // テキストの省略設定をしているつもり…
        EditText editText1 = new EditText(this);
        editText1.setSingleLine(true);
        editText1.setEllipsize(TruncateAt.MIDDLE);      
        layout.addView(editText1);

        EditText editText2 = new EditText(this);
        layout.addView(editText2);
    }
}

TextView や Button コンポーネントでのテキスト省略表示は、以下の設定が必要でした。
1.setSingleLine メソッドで 1 行表示を強制する
2.setEllipsize メソッドに省略する部分を指定

今回、そのまま試してみたのですが EditText では上手く適用されないようです。
EditText コンポーネントは、フォーカスが当たっているとテキストの編集が可能になって
しまうため、サンプルでは他の EditText にフォーカスを移動できるように 2 つ用意して
みましたが、フォーカスが当たっていなくてもテキスト省略表示は有効にはなりませんで
した。一応、他に設定が無いか調べてみたのですが、見当たらなかったので EditText の
場合は、テキストの省略表示は無いかもしれませんね。

EditText クラス( その 9 )

今日から EditText クラスの各種メソッドを見て行きます。

Android Developers -EditText-
http://developer.android.com/reference/android/widget/EditText.html

今日はエディットテキストの改行設定について見てみます。
以下、サンプルです。

public class HelloAndroidActivity extends Activity {
    private final int MP = LinearLayout.LayoutParams.MATCH_PARENT; 
    private final int WC = LinearLayout.LayoutParams.WRAP_CONTENT; 
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        LinearLayout layout = new LinearLayout(this);
        setContentView(layout);

        EditText editText = new EditText(this);
        editText.setHorizontallyScrolling(true);
        layout.addView(editText, new LinearLayout.LayoutParams(WC,WC));
    }
}

setHorizontallyScrolling メソッドに true を設定してます。
この設定をしておくと、エディットテキストにキーボードで文字を入力していき、画面端
まで到達しても、テキストが改行されて表示される事はありません。改行されない文表示
されるテキストは、水平方向にスクロールしてテキストが表示・編集されます。

ちなみに、この設定を行っても Enter で改行を入力すると改行する事は可能なので、改行
を禁止する設定ではありません。あくまで、テキストの自動折り返しをしなくなるだけです。

EditText クラス( その 8 )

今日から EditText クラスの各種メソッドを見て行きます。

Android Developers -EditText-
http://developer.android.com/reference/android/widget/EditText.html

今日はエディットテキストの配置について見てみます。
以下、サンプルです。

public class HelloAndroidActivity extends Activity {
    private final int MP = LinearLayout.LayoutParams.MATCH_PARENT; 
    private final int WC = LinearLayout.LayoutParams.WRAP_CONTENT; 
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        LinearLayout layout = new LinearLayout(this);
        setContentView(layout);

        EditText editText = new EditText(this);
        editText.setText("hoge");
        editText.setWidth(200);
        editText.setHeight(200);
        editText.setGravity(Gravity.CENTER);
        editText.setBackgroundColor(Color.GRAY);
        layout.addView(editText, new LinearLayout.LayoutParams(WC,WC));
    }
}

UI コンポーネントの配置は setGravity メソッドで指定します。
今回のサンプルでは、中央に配置してみました。
setWidth, setHeight で、サイズは 200 x 200 になっていますが、テキストの入力部分は
デフォルトのままです。配置を中央にしたので、上下左右に余白がある状態で表示されて
いると思います。

以下 setGravity メソッドに指定可能な定数を再掲しておきます。
デフォルトは NO_GRAVITY という定数があります。
これは Gravity.LEFT | Gravity.TOP と同じ表示になるっぽいですね。

// デフォルト
Gravity.NO_GRAVITY
// 左寄せ
Gravity.LEFT
// 右寄せ
Gravity.RIGHT
// 上寄せ
Gravity.TOP
// 下寄せ
Gravity.BOTTOM
// 中央配置
Gravity.CENTER
// 左右中央配置
Gravity.CENTER_HORIZONTAL
// 上下中央配置
Gravity.CENTER_VERTICAL

EditText クラス( その 7 )

今日から EditText クラスの各種メソッドを見て行きます。

Android Developers -EditText-
http://developer.android.com/reference/android/widget/EditText.html

今日はエディットテキストのパディングの設定を見てみます。
しつこいようですが、パディングとは「コンポーネントの境界から、テキストやボタン
などの内部の表示領域までの距離」の事でした。
以下、サンプルです。

public class HellowAndroidActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        LinearLayout layout = new LinearLayout(this);
        setContentView(layout);

        EditText editText = new EditText(this);
        editText.setText("hoge");
        int left = 30;
        int top = 30;
        int right = 30;
        int bottom = 30;
        editText.setPadding(left, top, right, bottom);
        editText.setBackgroundColor(Color.GRAY);
        layout.addView(editText);
    }
}

パディングの設定は setPadding メソッドを使用します。
引数のどれがどれか分かりにくいので、今回は変数にしてます。
単位はピクセルです。このサンプルの設定だと余白スペースが上下左右 30 ピクセル
いう表示になります