1. 程式人生 > >Android GridView自適應高度(不出現滾動條)

Android GridView自適應高度(不出現滾動條)

  最近有個需求就是,網格狀顯示,且需要自適應高度(不出現滾動條,如果有滾動條就需要考慮GrideView互相巢狀的滑動事件編寫了,雖然不麻煩,但佈局看起來卻不一定好看),大概看了一下網上的解決方法,最終採用瞭如下方案:
  

public class MyGridView extends GridView {

    public MyGridView(Context context) {
        super(context);
    }

    public MyGridView(Context context, AttributeSet attrs) {
        super
(context, attrs); } public MyGridView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2
, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, expandSpec); } @Override public int getNumColumns() {//可以不復寫,但必須在xml中宣告android:numColumns="3" return 3; } }

xml:

<com.xx.view.MyGridView
        android:id="@+id/legend_grid"
        android:layout_width="wrap_content"
android:layout_height="wrap_content" android:stretchMode="columnWidth" android:layout_margin="20dp" android:numColumns="3"/>

  另外,提供大家一個可以不用複寫GrideView的方法,但要每次更新資料後都用該方法設定一下高度(同樣需要在xml中配置GridView的 android:numColumns):
  

/**
     * gridview計算高度
     * */
    public static void setGridViewHeightByChildren(GridView gridView){
        //獲取gridview高度
        ListAdapter listAdaper=gridView.getAdapter();
        if(listAdaper==null){
            return;
        }
        //總高度
        int totalHeight=0;
        //計算行數 向上取整
        int lineNum=Math.ceil((double)listAdaper.getCount()/(double)gridView.getNumColumns());
        View item=listAdaper.getView(0,null,gridView);
        item.measure(0,0);
        //獲取高度和
        totalHeight=item.getMeasuredHeight()*lineNum;
        //佈局引數
        ViewGroup.LayoutParams params=gridView.getLayoutParams();
        //設定佈局高度
        params.height=totalHeight;
        //設定margin
        ((ViewGroup.MarginLayoutParams)params).setMargins(10,10,10,10);
        //設定引數
        gridView.setLayoutParams(params);
    }

相關推薦

Android GridView適應高度(出現滾動)

  最近有個需求就是,網格狀顯示,且需要自適應高度(不出現滾動條,如果有滾動條就需要考慮GrideView互相巢狀的滑動事件編寫了,雖然不麻煩,但佈局看起來卻不一定好看),大概看了一下網上的解決方法,最終採用瞭如下方案:    public class

textarea如何實現高度適應出現滾動

今天需要些一個回覆評論的頁面,設計師給的初始介面就是一個只有一行的框。然後當時就想這個互動該怎麼實現比較好,然後想起了新浪微博的做法:點選評論,預設顯示一行,當輸入的文字超過一行或者輸入Enter時,輸入框的高度會隨著改變,直到輸入完畢。頓時覺得這個細節做得挺不錯的,可以效仿下。下面分享2種實現text

iframe 適應高度 去掉iframe滾動 只留外面頁面的滾動

解決方法如下: 在iframe所呼叫的頁面增加如下程式碼: $(document).ready(function(){   if(window.parent != window){     parent.document.getElementById("mainMenu

Android使用GridView內容填充滿出現滾動的設計

GridView顯示不完成的原因是因為,他的外層也套用了一個滑動的控制元件,解決的方法就是重寫GridView,使控制GridView不能滾動,就是寫一個類繼承GridView。程式碼如下: publ

JS怎麼控制IFRAME高度自動適應內容而出現滾動

下面開始講: 通過Google搜尋iframe 自適應高度,結果5W多條,搜尋iframe 高度自適應,結果2W多條。我翻了前面的幾十條,刨去大量的轉載,有那麼三五篇是原創的。而這幾篇原創裡面,基本上只談到如何自適應靜的東西,就是沒有考慮到JS操作DOM之後,如何做動態同步

android ViewPager 適應高度

很多Android開發者會遇到的問題,ViewPager無法自適應內容的高度,包括子Fragment或view 下面根據需求給出2中方式來動態根據內容設定ViewPager的高度: 1.是網上大家都說的取所有view最大高度作為ViewPager的高度程式碼

Android GridView n行,適應高度佔滿螢幕,滾動

今天客戶提出一個問題,要求我們首頁的GrdiView,不要滾動,並且要根據不同的解析度的手機和不同大小的手機,來自適應。高度佔滿螢幕。 於是我就開始了做螢幕的自適應。。首先,我根據張鴻洋大神的關於螢幕的自適應部落格的http://blog.csdn.net/l

iOS:解決UITextView適應高度粘貼大量文字導致顯示全的問題

tex 顯示 輸入框 textview size self. uitext sel lec 一、描述 在UITextView輸入框中粘貼大量的文字時,UITextView內容自適應高度計算出現誤差,導致整塊文字上移消失。 二、方案 在UITextView文字改變的監聽中

Android評論彈出窗根據輸入法適應高度

需求分析:當我們點選輸入框時,會調出輸入法軟鍵盤,如果不做處理,PopupWindow評論視窗可能會擠到螢幕最上方,更糟糕的事件是看不到我們的輸入框,連自己輸入什麼內容都看不到,這樣使用者體驗非常差!下面先讓大家看我們做出來的效果圖: 上圖可以看出,輸入法彈出和隱藏,對

RecyclerView 高度能隨著Item數量 適應高度

round and cycle cal ica hit ati out 沒有 在最近項目中遇到 ,在RecyclerView加載list數據時,高度無法自適應增長,看了很多博客,各種嘗試,都沒有解決這個問題,在某個博客中,講到此解決方法,在此記錄下。 即在RecyclerV

android GridView在固定高度滾動(展示高度滾動高度要高)

GridView在固定高度內滾動 電視TV裡有個需求,海報列表展示兩行半,下面的半行上面有半透的遮罩。滾動的時候只在兩行的範圍內滾動,焦點不觸底。 解決辦法 GridView和ListView有個clipToPadding屬性,預設是true

div 適應高度 最大高度滾動顯示

背景:為解決這樣一種情況:設定div的最大高度為xx%,想要自適應瀏覽器視窗高度,但是超出div高度的部分,就算設定滾動條scroll或者auto,滾動條也並不會顯示出來。而max-height為具體px的則會顯示。下面隨便弄點程式碼說明這2種情況: 一、高度自適應設定為

iOS UITextView適應高度貼上大量文字導致顯示全問題處理

對UITextView做了輸入自適應高度處理,在貼上大量文字時出現了高度可自適應但文字顯示不全的問題,檢視圖層發現_UITextContainerView顯示的高度和實際高度不同,在自適應高度程式碼後新增下面程式碼,問題得到處理。 [textView sc

gridview 適應平均android介面

需要重寫 GridView和BaseAdapter public class WrapGridview extends GridView{ public WrapGridview(Context context) { super(context);

Android中NestedScrollView巢狀RecyclerView出現滾動流暢的問題

在使用support-v4包中的NestedScrollView時,如果在其中巢狀使用RecyclerView,會出現滑動不流暢的問題,佈局如下: <?xml version="1.0" enc

IE8下DIV嵌套出現外層適應高度

升級了IE8,發現了好些問題,一開始用IE6和IE7都沒有的新問題出現了,總歸時間有餘,就四處查閱解決辦法,大概就是以下的四種方法!<div id=”a1″><div id=”b1″></div><div id=”b2″></div></di

android ListView 巢狀scrollView 適應高度

很多時候我們的需求要求我們在scrollView裡面巢狀ListView,但是直接巢狀的話,ListView只會顯示一個Item,這時候就需要ListView根據Item的數量來自適應高度了。 //

子元素div高度確定,父div適應高度

在最外層div加以下樣式 height:100%;overflow:hidden; 其它方法: Div即父容器不根據內容自適應高度,我們看下面的程式碼: <div id="main"> <div id="content"></div&g

ListView 與 GridView 在ScrollView中適應高度

ListView public static void setListViewHeightBasedOnChildren(ListView listView) { if (limi

Android ListView 適應大小,覆蓋下方View

ListView設定為wrap_content,但是隨著ListView中item的增加,ListView將會覆蓋到下方的View,View看不到。 利用android:layout_weight屬