0

初めてのポスター、Android の新機能、そして私はこの問題で障害にぶつかったようです:

いくつかの同一の「複合」オブジェクトで構成される動的レイアウトを作成しています(これらは基本的に「フローティング」LinearLayoutであり、それぞれにアイコン(ImageView)とキャプション(TextView)が含まれています)。各 LinearLayout の (x,y) 座標は、ユーザーの操作に基づいて変更される可能性があり、正確な配置が必要なため (つまり、RelativeLayout を使用できないなど)、AbsoluteLayout 内に配置しています。

onCreate() 中に、これらの各オブジェクトを AbsoluteLayout オブジェクト内の子ビューとして追加し、(x,y) を手動で設定します。これまでのところ問題はなく、うまく機能し、初期レイアウトは完璧です。

問題:

最初の onCreate() の後、これらのオブジェクトの (x,y) 位置を画面上で変更することができません。layoutParams を更新できますが、画面上のレイアウト (AbsoluteLayout 内) は更新されません。forceLayout()、invalidate()、requestLayout() を試しましたが、どれも機能しません。

ここで私の基本的なアプローチに問題がありますか、それとも私が見逃しているものがありますか?

SurfaceView に変更してレンダリングを難しい方法で行うことを考えていますが、私のコードは現在 99% うまく機能しており、変更する必要がなければ変更したくありません。唯一の問題は、レイアウト マネージャーが子オブジェクトの位置変更の登録を単に拒否することです。

助けてください、私は何を間違っていますか?

4

1 に答える 1

0

UI のハンドラーを作成して、そこから UI を更新しようとしましたか..

UI は別のスレッドから更新できません。そのため、UI のスレッド ハンドラーを作成し、そのハンドラーを使用して UI への変更を更新します。

-ビナイ

于 2010-08-04T08:19:31.097 に答える