1. 程式人生 > >Android GridView 指定行數,動態行寬,佔滿空間

Android GridView 指定行數,動態行寬,佔滿空間

有時間我們需要 使用GridViw 讓它佔滿父控制元件,例:

特別是在適配的時間比較麻煩,在不同的機型上可能分出下,下面空的太多,或有滾動條問題,;

下面說一下實現思路:

首先,設定GridView 為三列,出來的為二行三列;

我們在Adapter getView 中判斷解析度,得到寬度和高度,GridView 佔總高度的八分中的三分;

設定  Item 即每個子項的高佔的空間八分中的三分的一半,寬佔螢幕的三分之一;

其次把哪麼把圖片設定為Item高度的一半,即 ScreenHight/8*3/2/2;

寬度為Item寬度的二分之一,圖片縮放類似為 CENTER_INSIDE

這樣,基本就可以佔滿全空間了;

下面看程式碼:

設定Item:

int screenWidth = ScreenUtils.getScreenWidth();
int screenHeight = ScreenUtils.getScreenHeight();
//每個子項佔寬度的三分之一,高度是寬屏的分七分,再佔三分中的二分之一,還需要減去下面toolbar
int viewWidth = screenWidth/3;
int viewHeight = screenHeight*3/(2*8);
//L.e("screenWidth:" + screenWidth);
if (view == null) {
    view = View.inflate
(mContext, R.layout.fragment_item_mine_grid, null); AbsListView.LayoutParams params = new AbsListView.LayoutParams(viewWidth,viewHeight); view.setLayoutParams(params); }
設定圖片:
ViewGroup.LayoutParams ps = imageView.getLayoutParams();
ps.width = viewWidth/2;
ps.height = viewHeight/2;
imageView.setLayoutParams(ps);
//imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); Mine_GridItem ci = mList.get(i); textView.setText(ci.getType()); imageView.setImageResource(ci.getResource());

最後看一下在橫屏效果

堅屏的效果,也沒有問題: