EU向けの同意バナーを停止しました
【Androidアプリ開発】継続更新:レイアウトパーツのメモ(Java版)

【Androidアプリ開発】継続更新:レイアウトパーツのメモ(Java版)

2020年12月2日

こんにちは、コンテンツクリエイターのともすけです。

この記事は、技術メモを書き留めておくページです。将来整理するかもしれませんが、現時点ではつらつらと書き連ねるだけです。Kotlinを使えないので、Javaコードです。目次からほしい情報にアクセスしてください。

また、できるだけCodeで書きたい人なので、XML情報はありません。

EditText

Activityが呼ばれたときに自動でフォーカス

文字入力するときに、いちいち入力エリアをタップする手間を省きます。

EditText editText = new EditText(this);
editText.requestFocus();  // これ

TextView

サイズ指定

サイズ指定時は単位を意識した方がいいと思うのですが、文法を忘れたので調べた結果を書いておきます。

TextView view = new TextView(this);
view.setTextSize(TypedValue.COMPLEX_UNIT_DIP, int size);

“TypedValue.” まで入力すれば、何が選択できるか出てきます。筆者は、画面密度とかをあまり気にしなくないので基本はDIPを使うようにしています。

フォント変更

TextViewの階層に置きましたが、文字表示系では同様に使えるはずです。

main/assets/fontsにフォントファイル(.ttf)を置くと、アプリに読ませてフォントを変えることができます。assetsやfontsディレクトリは、はじめはないので自分で作成します。

TextView view = new TextView(this);
Typeface typeface = Typeface.createFromAsset(getAssets(), "fonts/xxx.ttf");
view.setTypeface(typeface);

画面に収まらないときの自動スクロール(marquee)

ScrollView系の話ではありません。コメントアウトしている行は失敗例です。

  • 表示行を1行に制限するのに、setMaxLines(1)では意味がなかったこと
  • 選択した状態でないとスクロールしないとのことで、setFocusable(true)を使ったが違った
textView.setEllipsize(TextUtils.TruncateAt.MARQUEE);
//textView.setMaxLines(1);
textView.setSingleLine();
//textView.setFocusable(true);
textView.setSelected(true);

センタリングなど

TextViewに限りませんが、setGravityが使えるViewに使える手法です。

TextView view = new TextView(this);
view.setGravity(Gravity.CENTER);

設定できるGravityは、「Gravity.」まで入力すると補完リストが出てきますので、そこから選んでください。