Android/UIテキスト
提供: 初心者エンジニアの簡易メモ
目次
テキスト書き換え
- xmlレイアウト
<TextView android:id="@+id/textView1"
android:text="@string/hello"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
- java
TextView textView1 = (TextView)findViewById(R.id.textView1);
textView1.setText("テスト");
テキストアウトライン設定
- xml
<TextView android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="#ffffffff"
android:shadowColor="#ff000000"
android:shadowDy="0"
android:shadowDx="0"
android:shadowRadius="4"
android:text="test"/>
改行テキスト
- xml
<TextView android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="1、\nテストです\n\n2、てすとです"
android:singleLine="false"
/>
¥nでなく\n (macだとoption+nで入力)でなければならない。
中央寄せ
android:gravity="center"
フォントサイズ
android:textSize="18sp"
余白
android:paddingTop="10sp" android:paddingBottom="10sp" android:paddingLeft="10sp" android:paddingRight="10sp"
match_parentとmatch_parent
同じ意味だが、match_parentの方が推奨(android 2.2[API 8]以上)
参考: http://android49.blog.fc2.com/blog-entry-20.html
テキスト表示
Paint paint = new Paint();
paint.setColor(Color.BLUE);
// アンチエイリアス
paint.setAntiAlias(true);
// 文字の大きさ
paint.setTextSize(40);
// 指定した位置に文字列を描く
canvas.drawText("テキスト表示", 0, 0, paint);
テキストを傾ける(回転)
// Pathに沿って文字を書く
paint.setColor(Color.RED);
Path path = new Path();
path.moveTo(50, 200);
path.lineTo(450, 500);
canvas.drawTextOnPath("文字列を傾ける", path, 0, 0, paint);
paint.setColor(Color.GREEN);
テキストを傾ける(回転)メソッド化
// テキスト回転描画
public static void drawTextRota(Canvas canvas, String str, int x, int y, int degrees, int size) {
Paint paint = new Paint();
// Pathに沿って文字を書く
paint.setColor(Color.RED);
// アンチエイリアス
paint.setAntiAlias(true);
// 文字の大きさ
paint.setTextSize(size);
Path path = new Path();
// 文字列の幅を取得
float textWidth = paint.measureText(str);
float rad = (float)(degrees * Math.PI / 180);
int x1 = (int)(- textWidth / 2 * Math.cos(rad) + x);
int y1 = (int)(- textWidth / 2 * Math.sin(rad) + y);
int x2 = (int)(textWidth / 2 * Math.cos(rad) + x);
int y2 = (int)(textWidth / 2 * Math.sin(rad) + y);
path.moveTo(x1, y1);
path.lineTo(x2, y2);
canvas.drawTextOnPath(str, path, 0, 0, paint);
}
