2011年09月03日

Android 表示位置ではまったこと

Android でまたまたはまりました。

よくあることです。

今回はViewなどを絶対値で表示するのにはまりました。
上とかセンターとかはgravityで設定するといいです。

しかし、上から100px、左から100pxと表示したい場合がやっかいでした。

直接、設定するメソッドはなく、LayoutParamsを設定し、setLayoutParamsメソッドで渡してあげる。

Button button = new Button(this);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(-2, -2);
layoutParams.setMargins(100, 100, 100, 100);
button.setLayoutParams(layoutParams);

といった感じコーディングすればいい。
(ちなみに引数の -2 はLinearLayout.LayoutParams.WRAP_CONTENTのこと。)

なんだ簡単じゃんっと思うだろう。

しかし、ここに大きな落とし穴。

今回で言えば、Buttonがどのレイアウトの上に表示するかによって微妙に変える必要がある。

上記の例はLinearLayoutの場合である。

これがFrameLayoutだと微妙に違う。

Button button = new Button(this);
FrameLayout.LayoutParams layoutParams= new FrameLayout.LayoutParams(-2, -2);
layoutParams.gravity = Gravity.LEFT;
layoutParams.setMargins(100, 100, 100, 100);
button.setLayoutParams(layoutParams);


まず、クラスが違う!LayoutPramsを使うには使うのだが、FrameLayoutクラスのものを使うのである。

参りますね^^

そして、FrameLayoutではgravity の設定も必要です。

レイアウトによって使うクラスが違うとは。。。

こんなところにはまってしまってました。

皆様もお気をつけて。
posted by hikaru at 16:04| Comment(0) | Android | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。