カスタム ビューを Java クラスとして定義しましたが、プログラムでそれらをレイアウトに配置したいと考えています。
次のようなレイアウト構造を定義できます。
<LinearLayout> <!-- vertical, main container -->
<LinearLayout> <!-- 1st horizontal (consists of 2 columns (items) ) -->
<CustomView /> <!-- 1 -->
<CustomView /> <!-- 2 -->
</LinearLayout>
<LinearLayout> <!-- 2nd horizontal (consists of 2 columns (items) ) -->
<CustomView /> <!-- 1 -->
<CustomView /> <!-- 2 -->
</LinearLayout>
<!-- ..... -->
<LinearLayout> <!-- nth horizontal (consists of n columns (items) ) -->
<CustomView /> <!-- 1 -->
<CustomView /> <!-- 2 -->
</LinearLayout>
</LinearLayout><!-- vertical container -->
しかし、カスタム ビューの 1 つを削除すると、醜いままです。n=3 で、カスタム ビュー番号 4 を削除したとします。
1 2
3
5 6
これは見栄えがよくありません。次のように「先頭のスペースを埋める」必要があります。
1 2
3 5
6
どうすればそのようなことを達成できますか?
CustomView
また、 s を Java コード (XML ではなく) で作成していることに注意してください。
画面サイズを取得してnで割って、値をLayoutParams.width
カスタムビューのとして割り当てようとしました。
しかし、StackOverflow のいくつかの質問によると、dp で画面サイズを取得することはあまり正確ではありません。
では、プログラムでグリッド レイアウトを作成するにはどうすればよいでしょうか。