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 | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。