Android GridView 指定行數,動態行寬,佔滿空間
阿新 • • 發佈:2019-02-17
有時間我們需要 使用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());
最後看一下在橫屏效果
堅屏的效果,也沒有問題: