フリープログラマー日記

iOS,アンドロイド開発を気ままにしながら生きてるおじさんのブログです。

第18回 AndroidのTextViewでサイズ指定の肝!

iOSでUILabelを使ったことは、AndroidではTextViewでやるといいようです。
氏名の入力で使うことになる予定ですが、テキストの入力は、iOSではUITextView、Androidでは、EditTextというクラスを使うようです。

この辺りはなるべくシンプルにいきたいです。

で、前回のプログラムのAndroidバージョンです。

    public EntryView(Context context,int width,int height) {
        super(context);
        setBackgroundColor(Color.argb(255,100,240,255));
        // このビューのサイズを受け取っておく
        myWidth = width;
        myHeight = height;

        runningSelect();

    }

    private void runningSelect() {

        // ランナーを指定する画面。
        // エントリー用のパーツを配置する

        // Entry(走者名の登録) TextView
        TextView title = new TextView(getContext());
        title.setText("Entry(走者名の登録)");
        final float size = myWidth * 0.07f;
        title.setTextSize(TypedValue.COMPLEX_UNIT_PX,size);
        title.setTextColor(Color.BLACK);

        LayoutParams titleParams = new LayoutParams(
                LayoutParams.WRAP_CONTENT,
                LayoutParams.WRAP_CONTENT);
        titleParams.addRule(ALIGN_PARENT_TOP);
        titleParams.addRule(CENTER_HORIZONTAL);

        this.addView(title,titleParams);
    }

文字のサイズ指定ですが、
title.setTextSize(TypedValue.COMPLEX_UNIT_PX,size);
という指定方法なんですね。
ピクセル単位で、このサイズで描いてね〜って感じでしょうか。

あと、swiftではsiztToFitで済ませたものが、AndroidではWRAP_CONTENT、縦と横に指定しています。
位置は、親ビューのTop,Centerで指定しています。

で、出来上がったのがこちらです。

f:id:momonga117:20180516103826p:plain

サイズ的には問題ないですが、swiftでWeight指定したために、文字の太さが変わってしまいました。むむ、ちょっと気になる。

また、調べておきます。