« 「Electric Sheeps#2」に行ってきた | トップページ | 「デビクロくんの恋と魔法」を読んで »

2014年10月25日 (土)

親レイアウトの外にはみ出る on Android

いろいろ私生活も仕事もばたばた。
戻ってきて落ち着いてたと思っても、一時だった(泣)

そんな中でAndroid関係を結構調べたけど、
何も記録できずに過ごしてた。
久々にやる気になってみよう
(きっと三日坊主になるだろうが。。)


さて、レイアウトを組むときに、
どうしても枠をはみ出したいときにどうするか。
これが今回のテーマだった。
FrameLayoutとか、RelativeLayoutとか、
中身の位置調整で、
android:layout_marginTop="-10dp"とか、
android:scrollX="10dp"とかで
調整をするけど、
どうしても親のViewGroupが超えれない。

そもそも、こんなことをやらなくていいように、
レイアウトを組むのが良いのだろうけど、
背景の座標をいじりたいけど、画像加工したくないとか、
贅沢な方には用途あるのかなぁ。

調べてみたら、同じことを考えてる人がいるもので、
onLayout()とか、onDraw()でがんばらなくても
結構楽にいけることがわかった。

FrameLayoutに属するViewがFrameLayoutの外に移動しても描画されるようにする

この方は、アニメのときに
飛び出したいみたいらしいけど、
canvas制限されてる関係で、
外に出れないんだろうなぁ~
(Animatorだと特に。。)

答えとしては、以下ふたつの指定と載ってた。
android:clipChildren="false"
android:clipToPadding=“false"
(リンクはAndroid Developer)

ただし、これは正確には違うっぽい。
Padding指定をしてれば正解だけど、
Padding指定をしていなければ、
clipChildrenだけで、領域を超えてくれる。

clipToPaddingは、
子Viewの描画領域をPaddingの中に納める設定。
デフォルトがtrueだけど、
Padding指定がないと、効果が出ない。

一方で、
clipChildrenは、デフォルトだとtrueになってて、
子Viewがレイアウトされた範囲を超えて描画されるのを
抑止する設定みたいだ。
なので、飛び出して描画したいと思った場合、どうするか。

実際は、
子Viewに対して、その親の親で、
clipChildrenをfalseにしてあげる必要があるのかな。
親の親を設定すると、親の描画範囲が広がるので、
Viewは、外に出ていける。

やってて頭おかしくなるけど、
AndroidStudioだと、その辺も反映してくれるので、
お試ししてみる分には楽かなぁ~。

実験機が古いので、4.0.3ぐらいで試したり、
ソース見てたので、最新だとどうかなぁ

リンク:
FrameLayoutに属するViewがFrameLayoutの外に移動しても描画されるようにする
関連ソースのViewGroup



|

« 「Electric Sheeps#2」に行ってきた | トップページ | 「デビクロくんの恋と魔法」を読んで »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/97274/57785574

この記事へのトラックバック一覧です: 親レイアウトの外にはみ出る on Android:

« 「Electric Sheeps#2」に行ってきた | トップページ | 「デビクロくんの恋と魔法」を読んで »