目次
Toastのカスタマイズ
レイアウトの入れ子
グラフィカル・レイアウトで親Layout内にレイアウトをD&Dすると子レイアウトになる。
階層イメージ
途中手順
簡単な操作なのでサラッと。
- 新規xmlレイアウトファイルを作成(toast.xml)
- アウトラインのLinearLayout1を水平方向に変える。
- イメージ&メディアでImageViewをD&Dして画像を選ぶ(今回はic_launcher)
- 横にTextView配置
- layout_width及びlayout_heightの数値を決める(単位はdp)
※文字の単位はsp
ボタンのsetOnClickListenerを簡略化する
ボタンのOn Clickプロパティに名前をつけるとsetOnClickListenerがつけた名前で簡略化出来る。匿名クラスとかゴリゴリ書かなくてよくなる。
toast.xmlを表示するコードを書く
btn_clickは簡略化したメソッド名。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
import android.os.Bundle; import android.app.Activity; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void btn_click(View v) { // インフレータをつくる。 LayoutInflater inflater = getLayoutInflater(); // インフレータがレイアウトファイルをinflateすることでviewができる View layout = inflater.inflate(R.layout.toast, null); // ImageViewを取得して任意のイメージを設定する ImageView image = (ImageView) layout.findViewById(R.id.image); image.setImageResource(R.drawable.ic_launcher); // TextViewを取得して任意のテキストを設定する TextView textView = (TextView) layout.findViewById(R.id.text); textView.setText("このようにToastをカスタマイズできます。"); Toast toast = new Toast(this); toast.setView(layout); toast.setGravity(Gravity.CENTER, 0, 0); toast.setDuration(Toast.LENGTH_SHORT); toast.show(); } } |
inflater
ちょっと意味が分からなかったので。
inflateを直訳すると膨らませるということらしい。
ggったところレイアウトなどを別定義する用途で使う模様。
こちらのサイトのような形で。
レイアウトを別ファイルで定義する方法
新しいイメージを作る
プロジェクト名/res/drawable-hdpiに画像を入れる。
画像名は数字から始まると認識しないので注意。
ちなみにdrawable-ldpi,drawable-mdpiなど解像度別にフォルダ分けされているので解像度によって画像を変えたい場合は各解像度フォルダに同名画像を入れるとよい。
あとはレイアウトの時に該当画像を選ぶだけ。
新しい文字列を作る
今までtextプロパティに直書きだったが記法としてはstrings.xmlに書くのが行儀が良いらしい。
1 2 3 4 5 6 7 |
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">app name</string> <string name="action_settings">Settings</string> <string name="hello_world">Hello world!</string> <string name="new_pro">表示したい文字列</string> </resources> |
書いたらテキストビューのtextプロパティに
android:text="@string/new_pro"
と書いてあげるとstrings.xmlから呼び出されたテキストを表示できる。
API 19: Android 4.4.2について
文字入力が出来ない、リンクエラーが出る、等バグの温床なので17(4.2.2)辺りで開発をすること(2013.12.25現在)
今日作ったもの
- 割り勘計算機
- 商品割引計算機
コードは学習した内容を踏襲したものばかりなので割愛。
今日のひとこと
メモ帳なんて何もいいことなんて無いんだ。メモ帳はコンピュータから削除したいくらいだ(怒
コメント
No Trackbacks.