リサイクルされたビューが表示される状況がありますが、私はAndroidの最適化のために再レイアウトしないと考えています。LinearLayoutの強制再レイアウト
多くの投稿が、リサイクルされたビューでview.layout()を呼び出すことを提案していますが、これはうまくいくと思われます。しかし、それは自分自身のLayoutParamsを設定することを意味し、実際に動作させることができると確信していますが、リサイクルされたビューが再作成された時点で、すべての情報を再利用できるわけではありません。
この問題は、ネストされたLinearLayoutsを持つことに固有のことがあります。私がテストを実行したときに、1つのLinearLayoutに折り畳まれると、問題は消えました。
ここでは失敗したレイアウトの簡略版です。この例では、外側のLinearLayoutのonLayout()が呼び出されます。内部レイアウトのonLayout()が呼び出された場合、私は(実験をしなくても)わかりません。 TextViewのonLayoutは呼び出されず、「その他のもの」にも呼び出されません。
UPDATE:内部レイアウトのonLayout()が呼び出されていません。
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/node"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/note"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
... more stuff ...
</LinearLayout>
... more stuff ...
</LinearLayout >
ああ、私はこれは私がのTextViewと他のウィジェットを再レイアウトするには、Androidを強制的に「正しい」方法があります望んでいるのAndroid API 19.
を実行しているデバイス上でのみ起こっているように見える言及する必要がありますそのレベルで。