GridView getRequestedColumnWidth 與 getColumnWidth 區(qū)別

最近公司項(xiàng)目用到GridView奏司,用到相關(guān)API時(shí)候,有這個(gè)疑問唤反,網(wǎng)上找過也沒什么明確答案春瞬。
官文 里面柴信,看了對(duì) getRequestedColumnWidth 的說明也是糊里糊涂的。

Return the requested width of a column in the grid.
This may not be the actual column width used. Use getColumnWidth() to retrieve the current real width of a column.

寫了一個(gè)小demo試了試宽气。


一随常、相關(guān)文件說明

1. MyGridView: 繼承 GridView,重寫了onMeasure萄涯,方便打印Log

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        Log.d("MyLog", "getRequestedColumnWidth(px): " + getRequestedColumnWidth());
        Log.d("MyLog", "getRequestedColumnWidth(dp): " + Tools.pxToDp(getContext(), getRequestedColumnWidth()));
        Log.d("MyLog", "getColumnWidth(px): " + getColumnWidth());
        Log.d("MyLog", "getColumnWidth(dp): " + Tools.pxToDp(getContext(), getColumnWidth()));
    }

2.SquareLayout: 繼承RelativeLayout绪氛,為保證Item是正方形

用到的是以下文件

https://github.com/goodev/SquareGridView/blob/master/SquareGrid/src/org/goodev/squaregrid/SquareLayout.java

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        // For simple implementation, or internal size is always 0.
        // We depend on the container to specify the layout size of
        // our view. We can't really know what it is since we will be
        // adding and removing different arbitrary views and do not
        // want the layout to change as this happens.
        setMeasuredDimension(getDefaultSize(0, widthMeasureSpec), getDefaultSize(0, heightMeasureSpec));

        // Children are just made to fill our space.
        int childWidthSize = getMeasuredWidth();

        //高度和寬度一樣
        heightMeasureSpec = widthMeasureSpec = MeasureSpec.makeMeasureSpec(childWidthSize, MeasureSpec.EXACTLY);
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    }

3.item.xml

<com.qiang.gridviewdemo.SquareLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="#74c76f">

    <ImageView
        android:id="@+id/image"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:src="@mipmap/image"/>

    <TextView
        android:id="@+id/text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:background="#57080404"
        android:gravity="center"
        android:padding="5dp"
        android:textColor="@android:color/white"
        android:textSize="14sp"
        tools:text="asdfasdfasdf"/>

</com.qiang.gridviewdemo.SquareLayout>

截圖

4.activity_main.xml : 主要對(duì)MyGridView進(jìn)行相關(guān)屬性設(shè)置

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.qiang.gridviewdemo.MyGridView
        android:id="@+id/gridView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:horizontalSpacing="5dp"
        android:padding="5dp"
        android:scrollbars="none"
        android:verticalSpacing="5dp"/>

</LinearLayout>

5.MainActivity:

public class MainActivity extends AppCompatActivity {

    private MyGridView gridView;
    private List<User> mUsers;

    private static final int COLUMN_NUM = GridView.AUTO_FIT;
    private static final float COLUMN_WIDTH = 150f;
    private static final int STRETCH_MODE = GridView.STRETCH_COLUMN_WIDTH;
    private int mColumnWidth;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        gridView = (MyGridView) findViewById(R.id.gridView);

        // 初始化List,加入30個(gè)User數(shù)據(jù)窃判,有name屬性
        initList();

        mColumnWidth = Tools.dpToPx(this, COLUMN_WIDTH);

        Log.d("MyLog", "mColumnWidth(px): " + mColumnWidth);

        gridView.setNumColumns(COLUMN_NUM);
        gridView.setColumnWidth(mColumnWidth);
        gridView.setStretchMode(STRETCH_MODE);

        gridView.setAdapter(new GridAdapter(this, mUsers));
    }
}

6.Adapter : 繼承BaseAdapter钞楼,普通寫法。

7.User : 普通實(shí)體類袄琳,有name 和 avatarUrl 兩個(gè)屬性。

8.Tools : 工具類燃乍,里面有 dp 與 px 互轉(zhuǎn)的兩個(gè)方法唆樊。

9.用到的測(cè)試機(jī)型: Cool dual1 , 應(yīng)該屬于 xxhdpi


二、實(shí)驗(yàn)開始

1. 正常啟動(dòng)App刻蟹,默認(rèn)是豎屏

(1) 截圖

(2) Log

2. 旋轉(zhuǎn)屏幕90° , 切換成橫屏

(1) 截圖

(2) Log


三逗旁、結(jié)合二里面的1、2總結(jié)

getRequestedColumnWidth : 獲得的是GridView一開始設(shè)定好的ColumnWidth
getColumnWidth ** : 獲得的是GridView經(jīng)過自動(dòng)調(diào)節(jié)過**的ColumnWidth


最后~ 安卓小菜鳥第一次寫分享文章,雖然這只是個(gè)小小小的知識(shí)點(diǎn)片效。红伦。。請(qǐng)大神繞道~
寫得不好請(qǐng)大家多多指出淀衣。謝謝(應(yīng)該沒人看的~)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末昙读,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子膨桥,更是在濱河造成了極大的恐慌蛮浑,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,729評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件只嚣,死亡現(xiàn)場(chǎng)離奇詭異沮稚,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)册舞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門蕴掏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人调鲸,你說我怎么就攤上這事囚似。” “怎么了线得?”我有些...
    開封第一講書人閱讀 169,461評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵饶唤,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我贯钩,道長(zhǎng)募狂,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,135評(píng)論 1 300
  • 正文 為了忘掉前任角雷,我火速辦了婚禮祸穷,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘勺三。我一直安慰自己雷滚,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,130評(píng)論 6 398
  • 文/花漫 我一把揭開白布吗坚。 她就那樣靜靜地躺著祈远,像睡著了一般。 火紅的嫁衣襯著肌膚如雪商源。 梳的紋絲不亂的頭發(fā)上车份,一...
    開封第一講書人閱讀 52,736評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音牡彻,去河邊找鬼扫沼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的缎除。 我是一名探鬼主播严就,決...
    沈念sama閱讀 41,179評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼器罐!你這毒婦竟也來了梢为?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,124評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤技矮,失蹤者是張志新(化名)和其女友劉穎抖誉,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體衰倦,經(jīng)...
    沈念sama閱讀 46,657評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡袒炉,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,723評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了樊零。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片我磁。...
    茶點(diǎn)故事閱讀 40,872評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖驻襟,靈堂內(nèi)的尸體忽然破棺而出夺艰,到底是詐尸還是另有隱情,我是刑警寧澤沉衣,帶...
    沈念sama閱讀 36,533評(píng)論 5 351
  • 正文 年R本政府宣布郁副,位于F島的核電站,受9級(jí)特大地震影響豌习,放射性物質(zhì)發(fā)生泄漏存谎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,213評(píng)論 3 336
  • 文/蒙蒙 一肥隆、第九天 我趴在偏房一處隱蔽的房頂上張望既荚。 院中可真熱鬧,春花似錦栋艳、人聲如沸恰聘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)晴叨。三九已至,卻和暖如春旬昭,著一層夾襖步出監(jiān)牢的瞬間篙螟,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工问拘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,304評(píng)論 3 379
  • 正文 我出身青樓骤坐,卻偏偏與公主長(zhǎng)得像绪杏,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子纽绍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,876評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,332評(píng)論 25 707
  • afinalAfinal是一個(gè)android的ioc蕾久,orm框架 https://github.com/yangf...
    passiontim閱讀 15,440評(píng)論 2 45
  • 終于,主任還是問起了病例的整理情況拌夏。 我以為可以一拖再拖僧著,主任會(huì)忙的忘記這件事,只是障簿,我這如意小算盤打錯(cuò)了盹愚。 所以...
    文小輝cool閱讀 172評(píng)論 0 0
  • 12月3日中午飯炒飯花53晚飯面花100水果7元
    郭郭郭58閱讀 346評(píng)論 0 0
  • The set S originally contains numbers from 1 to n. But un...
    JRTx閱讀 337評(píng)論 0 0