けいまさんですけど

死ぬ気でやってりゃ、そりゃ死ぬわ

はじめに

艦これメンテナンスなのでブログ書きますね 意識高いのでブログ書くことを己に強いている

FrameLayout内のViewがFrameLayoutの外に出ても描画されるようにするには

ちょっと意味わからないと思うので図で示します。

@numa08 https://t.co/qNMZRqUkkb pic.twitter.com/a1FACMN8a8— 今中幸太 (@pside) 2013, 11月 26

FrameLayoutの中身としてImageViewなりなんなりが入っている状態でアニメーションなりなんなりをさせてLayoutの境界線を超える場合、基本的にはLayoutの外にいった領域は描画されないようです。

実はこれが非常に微妙で、手元のAndroid2.3端末では境界の外の部分も描画されていたように見受けられたのでちょっと困惑しました。
どうもAndroid4系とAndroid2系ではmarginやpaddingの扱いが微妙に異なるっぽく、そこで機種依存を出していたような気がします。今となってはどうでもよいことなので詳しく検証してません!

結果的には以下のようにして対応しました。

@numa08 僭越ながら自己レスさせていただきますと、 FrameLayout にandroid:clipChildren="false" android:clipToPadding=“false" と書くことで顧客がほんとうに必要だったものを得ることが出来ました— 今中幸太 (@pside) 2013, 11月 26

なんてことないですが、ViewGroupクラスについてのリファレンスをよく読まないと気が付かない感じでつらかった。。。

ちなみに

iOS(Cocoa touch)で同じことをするには、 UIView の clipToBouds なるフィールドを@NOとかにすると良い感じっぽいです。

# 前職でこれを使ったUI改善を行って大満足だった事案ある