Widget解説第一回 "TextView"

Androidには便利なWidgetがいくつもあるがそれを使いこなすのは難しい。
そこで自分のためということも含め使い方の解説をしていきたい。


今回とりあげるTextViewはテキストを表示するだけでなく、例えばボタンのラベルとかにも使われている。
そんなわけで第一回はテキスト表示の基本となるTextViewから紹介しようと思う。


まずは下部の動作画面とソースを見てもらうとわかりやすいはず。
作る際に注意する点を次に説明する。


setBackgroundColorメソッドやsetTextColorメソッドなどでの色の指定はARGB形式の16進数で指定するか、
android.graphics.Colorを使って指定する。


setBackgroundメソッドで指定できるのはdrawable形式のもの、もしくはdrawableのリソースIDである。


setTextSizeメソッドやsetTextScaleXメソッドなどの大きさの指定はfloat型である。
そのためint型やdouble型ではなく数字の後にfを付けなければいけない。ここら辺厳しいのね。
あとなんでsetTextScaleYメソッドがないんだろうか?


テキストを太字や斜体にするにはsetTypefaceメソッドを使う。
指定する値はandroid.graphics.Typefaceに載っていて、
DEFAULT_BOLDの他にDEFAULT_ITALIC、DEFAULT_BOLD_ITALIC、MONOSPACE、SANS_SERIF、SERIFが指定できる。


テキストの位置はsetAlignmentメソッドにandroid.text.Alignmentで指定する。
今回のサンプルで使用したALIGN_CENTER以外に、ALIGN_NORMAL、ALIGN_OPPOSITEが指定できる。


目新しいところはないと思うがテキスト表示の基本となる部分なので覚えておきたい。

ソース

package net.swelt.android.widgettextviewtest;

import android.app.Activity;
import android.os.Bundle;
import android.content.Context;
import android.graphics.Color;
import android.graphics.Typeface;
import android.text.Layout;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;

public class WidgetTextViewTest extends Activity {
	private final int WRAP_CONTENT = ViewGroup.LayoutParams.WRAP_CONTENT; 
	private final int FILL_PARENT = ViewGroup.LayoutParams.FILL_PARENT;
	
	private LinearLayout mLinearLayout;
    
	/** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);

        mLinearLayout = new LinearLayout(this);
        setContentView(mLinearLayout);
        mLinearLayout.setOrientation(LinearLayout.VERTICAL);
        
        //setText
        TextView tv1 = makeTextView(this, FILL_PARENT, WRAP_CONTENT);
        tv1.setText("TextView1");
        
        //setTextColor
        TextView tv2 = makeTextView(this, FILL_PARENT, WRAP_CONTENT);
        tv2.setText("TextView2");
        tv2.setTextColor(Color.BLUE);
        //tv2.setTextColor(0xff0000ff);
        
        //setBackgroundColor
        TextView tv3 = makeTextView(this, FILL_PARENT, WRAP_CONTENT);
        tv3.setText("TextView3");
        tv3.setBackgroundColor(Color.CYAN);
        
        //setBackground
        TextView tv4 = makeTextView(this, FILL_PARENT, WRAP_CONTENT);
        tv4.setText("TextView4");
        tv4.setBackground(R.drawable.kirby);
        
        //setShadowLayer
        TextView tv5 = makeTextView(this, FILL_PARENT, WRAP_CONTENT);
        tv5.setText("TextView5");
        tv5.setShadowLayer(2, 2, 2, Color.BLACK);
        
        //setEnabled, setDisableTextColor
        TextView tv6 = makeTextView(this, FILL_PARENT, WRAP_CONTENT);
        tv6.setText("TextView6");
        tv6.setDisabledTextColor(Color.GREEN);
        tv6.setEnabled(false);
        
        //setTextSize
        TextView tv7 = makeTextView(this, FILL_PARENT, WRAP_CONTENT);
        tv7.setText("TextView7");
        tv7.setTextSize(18.0f);
        
        //setTextScaleX
        TextView tv8 = makeTextView(this, FILL_PARENT, WRAP_CONTENT);
        tv8.setText("TextView8");
        tv8.setTextScaleX(4.0f);
        
        //setTypeface
        TextView tv9 = makeTextView(this, FILL_PARENT, WRAP_CONTENT);
        tv9.setText("TextView9");
        tv9.setTypeface(Typeface.SANS_SERIF);
        
        TextView tv10 = makeTextView(this, FILL_PARENT, WRAP_CONTENT);
        tv10.setText("TextView10");
        tv10.setAlignment(Layout.Alignment.ALIGN_CENTER);
    }
    
    private TextView makeTextView(Context context, int w, int h) {
    	TextView tv = new TextView(context);
    	tv.setLayoutParams(new LinearLayout.LayoutParams(w, h));
       	mLinearLayout.addView(tv);
    	return tv;
    }
}