Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android敗筆之ListView設置分割線顏色

Android敗筆之ListView設置分割線顏色

編輯:關於Android編程

使用下面代碼設置分隔線顏色,無效,竟然看不到分割線了,即使設置分割線寬度為100,也看不到,從這兩行代碼看,應該沒什麼問題吧,也是很常規的寫法。

        listView.setDividerHeight(1);
        listView.setDivider(new ColorDrawable(Color.GRAY));

為什麼無效呢?看看setDivider的源碼

    public void setDivider(Drawable divider) {
        if (divider != null) {
            mDividerHeight = divider.getIntrinsicHeight();
        } else {
            mDividerHeight = 0;
        }
        mDivider = divider;
        mDividerIsOpaque = divider == null || divider.getOpacity() == PixelFormat.OPAQUE;
        requestLayout();
        invalidate();
    }

看到 下面代碼了嗎

        if (divider != null) {
            mDividerHeight = divider.getIntrinsicHeight();

如果參數不為空,要獲取一個內部默認的高度,這個高度是多少呢,看下面代碼

    public int getIntrinsicHeight() {
        return -1;
    }

高度返回-1,要能看到線才見鬼了!

從源代碼看,只要調用了ListView的setDivider接口,mDividerHeight就會被置為0或-1,所以你根本看不到線,如果想看到線,就要把調用順序反過來,如下

        listView.setDivider(new ColorDrawable(Color.GRAY));
        listView.setDividerHeight(1);

在此,不評論其源代碼如何,只是個人認為這樣的邏輯實在不妥,設置顏色不應該將 已經設置好的基本參數修改掉。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved