[解決済み] 実行時にAndroidのビューのサイズを決定する
質問
アクティビティが作成された後、Androidアプリのビューにアニメーションを適用しようとしています。 これを行うには、ビューの現在のサイズを決定し、現在のサイズから新しいサイズにスケールするアニメーションをセットアップする必要があります。 この部分は、ユーザーからの入力に応じてビューが異なるサイズに拡大されるため、実行時に行う必要があります。 私のレイアウトはXMLで定義されています。
これは簡単な作業のように思われ、これに関する多くのSO質問がありますが、明らかに私の問題を解決したものはありません。 したがって、おそらく私は明白な何かを見逃しています。 私は以下の方法で私のビューにハンドルを取得します。
ImageView myView = (ImageView) getWindow().findViewById(R.id.MyViewID);
これは問題なく動作しますが
getWidth()
,
getHeight()
,
getMeasuredWidth()
,
getLayoutParams().width
など、すべて0を返します。 また、手動で
measure()
を呼び出した後、ビュー上で
getMeasuredWidth()
を呼び出しても、何の効果もありません。
これらのメソッドを呼び出し、デバッガでオブジェクトを検査することを試しましたが、私のアクティビティの
onCreate()
と
onPostCreate()
. このビューの正確な寸法を実行時に把握するにはどうしたらよいでしょうか。
どのように解決するのですか?
mbaird さんのアドバイスに基づき、私はこの問題を解決する方法を見つけました。
ImageView
クラスをサブクラス化し、オーバーライド
onLayout()
. そして、アクティビティが実装するオブザーバインターフェースを作成し、自分自身への参照をクラスに渡すことで、実際にサイズ調整が終了したときにアクティビティに伝えることができるようにしました。
私はこれが最善の解決策であると100%確信しているわけではありませんが(それゆえ、まだこの答えを正しいものとしてマークしていません)、これは動作しますし、ドキュメントによると、ビューの実際のサイズを見つけることができる最初の方法です。
関連
-
[解決済み】Android "ビュー階層を作成した元のスレッドだけが、そのビューに触れることができる"
-
エラーが発生しました。ArrayAdapter は、リソース ID が TextView である必要があります。
-
android studioが "The activity must be exported or contain an intent-filter" と表示され実行される。
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] Androidでアクティビティ起動時にEditTextにフォーカスが当たらないようにする方法
-
[解決済み] インスタンス状態の保存を使用してアクティビティ状態を保存するにはどうすればよいですか?
-
[解決済み] Androidの「コンテキスト」とは何ですか?
-
[解決済み] EclipseのAndroidプラグインで "Debug certificate expired "エラーが発生する。
-
[解決済み】「px」、「dip」、「dp」、「sp」の違いは?
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Androidのadbデバイスがオフラインであることが判明
-
AndroidでAttempt to invoke virtual method... on null object referenceの例外が発生する。
-
アプリはGoogle検索でインデックスされません Androidmanifestのクソみたいな黄色い警告
-
エラーが発生しました。ArrayAdapter は、リソース ID が TextView である必要があります。
-
telnet'が内部コマンドまたは外部コマンドとして認識されない 解決方法
-
SpinnerのOnItemSelectedListenerのonItemSelectedメソッドの4つのパラメーターの意味
-
超シンプルなアンドロイドのタイムディレイ機能
-
アンドロイドの遅延実行のいくつかの方法
-
[解決済み] Androidのステータスバーの高さ [重複]について
-
[解決済み] FloatingActionButtonのサンプルとサポートライブラリ