画面サイズが何であれ、完全に収まるグリッドビューを作成しようとしています。この主題に関する多くの例またはSOの回答を読んだとき、私が見つけた唯一のことは、いくつかの「dimensions.xml」ファイルを各values-sizeフォルダーに配置し、gridviewに列数と自動魔法の間隔を適応させることです。問題は、間隔が大きすぎて、結果が非常に醜い場合があることです。
私の質問は次のとおりです。サイズを入れたくない場合、グリッドビューをピクセル精度で管理したい場合はどうすればよいですか? どんな例でも歓迎されます。
明確にするために:たとえば、各列の間に4ピクセルのスペーサーを持つx列が必要なため、そのための列のより適切なサイズを計算し、それをグリッドビューに指定する必要があります。アイデアは、すべてのデバイスの gridelement 間に常に同じスペースがある google play ストア アプリのようなものをレンダリングすることです (列は画面サイズに合わせて調整されます)。
編集:これが私が現在使用しているコードです...これは、グリッドビューを表示する方法を示しているRomain Guyの例から来ています。
// This listener is used to get the final width of the GridView and then calculate the
// number of columns and the width of each column. The width of each column is variable
// as the GridView has stretchMode=columnWidth. The column width is used to set the height
// of each view so we get nice square thumbnails.
mGridView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
if (mAdapter.getNumColumns() == 0) {
final int numColumns = (int) Math.floor((double) mGridView.getWidth() / (mImageThumbSize + mImageThumbSpacing));
if (numColumns > 0) {
final int columnWidth = mGridView.getWidth() / numColumns - mImageThumbSpacing;
mAdapter.setNumColumns(numColumns);
mAdapter.setItemHeight(columnWidth);
}
}
}
});
mImageThumbSize と mImageThumbSpacing は寸法ファイルから取得されます。私が探しているのは、画面サイズに応じて最適な列数を自動的に計算する方法です。例: 低解像度の電話 2 列、電話 3 列、小型タブレット 4、タブレット 5、大型タブレット 6。主な問題は、電話がタブレットと同じグリッドビュー サイズを提供できるため、純粋な画面サイズに依存できないことです。計算。