TableLayout のパフォーマンスがひどいです。ここで同じことについて話しているいくつかの投稿を読みました...
Android 動的に作成されたテーブル - パフォーマンスが悪い
すでに複雑なレイアウト内で tablelayout を使用しています。私はすでに多くのビューを使用しています。もちろん、使用するビューが多いほど、パフォーマンスが低下します。これは明らかですが、他のウィジェットと比較してパフォーマンスが非常に悪い可能性があるのはなぜでしょうか。
私の場合、5 * 5のテキストビュー(行のプレーンテキストビューのみ)を含むテーブルレイアウトにより、 TextView を更新するだけで、システムが1.5秒以上フリーズすることがあります。テーブル全体をレンダリングすることについて話しているのではなく、テーブルレイアウト内の 1 つのテキストビューを更新するだけです。
setColumnsStretchable()を疑ったのですが、伸びないように設定しても性能は同じです。
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
final TextView target=(TextView)seekBar.getTag();
target.setText(""+progress);
}
これは、セルを更新するために使用するコードです。ご覧のとおり、これは SeekBar リスナーの一部です。ターゲットのテキストビューをシークバーのタグとして保存するので、findView() などを実行する必要さえありません。
そのため、シークバーを動かすとジャンプが発生します: 1 秒以上かかります!! setText() を単独で実行します。テーブル内にない他のテキストビューを更新すると、予想どおり、更新はすぐに行われます。
私のテーブルが 10*10 の場合、3 秒ほどかかります!
あなたの経験では TableLayout はノーノーですか、それとも私は何か間違っているのでしょうか? 行またはセルのlayoutparamsの魔法の値でしょうか?
前もって感謝します。