私はこれについていくつかの記事を読んでいますが、問題を理解することはできません。私は、2つの列に6タイルのGridViewをスクロールする必要がないように、デバイスの画面に正確に合わせようとしています。だから私は、画面サイズのマイナスアクションバーの高さマイナス垂直スペースとして各タイルの高さを計算してみてくださいGridViewを画面に正確に合わせる
:それはどのように見えるかこれ。これは、タイルの高さを計算するために私のコードです:その後、私のGridViewAdapterに、私はgetViewメソッド内の各タイルの高さを設定
public static int getTileHeight(int numOfRows, int verticalSpacing, Context context) {
TypedValue tv = new TypedValue();
int actionBarHeight = 0;
if (context.getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true)) {
actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data, context.getResources().getDisplayMetrics());
}
DisplayMetrics displaymetrics = new DisplayMetrics();
((Activity) context).getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int height = displaymetrics.heightPixels;
int px = Math.round((numOfRows - 1) * verticalSpacing * (context.getResources().getDisplayMetrics().xdpi/DisplayMetrics.DENSITY_DEFAULT));
return ((height - actionBarHeight - px)/numOfRows);
}
垂直方向の間隔は
gridView.getVerticalSpacing()
によって取得されます。
picture.getLayoutParams().height = getTileHeight(...);
ここでpictureは画像が入ったImageViewです。
しかし、GridViewの高さは常に画面には少し大きすぎます。私は画面の高さに完全に一致することはできません。私の欠点は何ですか?
xmlを共有できますか? – Shaishav
あなたは常にちょうど6アイテムありますか?もしそうなら、おそらく 'GridView'が最良の選択ではなく、代わりに' layout_weight'と等しい 'LinearLayout'sを使うべきです。 – Karakuri