0

我已經使用GridView製作了一個數據表,並且希望在每行下面應用水平分隔線,如Google材質設計準則中所示。但是,我找不到任何有關其實施的信息。有任何想法嗎?在GridView的行之間添加分隔線

enter image description here

+0

http://stackoverflow.com/questions/7132030/android-gridview-draw -dividers –

回答

1

儘量給背景色的GridView這樣

<GridView 
    android:id="@+id/gridView1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="#e5e5e5" 
    android:horizontalSpacing="1dp" 
    android:numColumns="auto_fit" 
    android:stretchMode="columnWidth" 
    android:verticalSpacing="1dp" > 

提供了DP horizo​​ntalSpacing和verticalSpacing的尺寸,並獲得您想要的分頻器 像灰色

+0

這只是使整個gridView指定爲背景的顏色。 –

1

背景顏色使用GridViewandroid:horizontalSpacing屬性。

1

剛剛創建自定義的GridView這樣

package net.nightwhistler.pageturner.view; 

import net.nightwhistler.pageturner.R; 
import net.nightwhistler.pageturner.library.LibraryBook; 
import net.nightwhistler.pageturner.library.QueryResult; 
import android.content.Context; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.graphics.Canvas; 
import android.graphics.Rect; 
import android.util.AttributeSet; 
import android.view.KeyEvent; 
import android.widget.GridView; 

public class BookCaseView extends GridView { 

private Bitmap background; 

private int mShelfWidth; 
private int mShelfHeight; 

private QueryResult<LibraryBook> result;  

private LibraryBook selectedBook; 

public BookCaseView(Context context, AttributeSet attributes) { 
    super(context, attributes); 

    this.setFocusableInTouchMode(true); 
    this.setClickable(false); 

    final Bitmap shelfBackground = BitmapFactory.decodeResource(context.getResources(), 
      R.drawable.shelf_single); 
    setBackground(shelfBackground); 
    this.setFocusable(true); 
} 

public void setBackground(Bitmap background) { 
    this.background = background; 

    mShelfWidth = background.getWidth(); 
    mShelfHeight = background.getHeight(); 
} 

protected void onClick(int bookIndex) { 
    LibraryBook book = this.result.getItemAt(bookIndex); 

    this.selectedBook = book; 
    invalidate(); 
} 

@Override 
protected void dispatchDraw(Canvas canvas) { 
    final int count = getChildCount(); 
    final int top = count > 0 ? getChildAt(0).getTop() : 0; 
    final int shelfWidth = mShelfWidth; 
    final int shelfHeight = mShelfHeight; 
    final int width = getWidth(); 
    final int height = getHeight(); 
    final Bitmap background = this.background; 

    for (int x = 0; x < width; x += shelfWidth) { 
     for (int y = top; y < height; y += shelfHeight) { 
      canvas.drawBitmap(background, x, y, null); 
     } 

     //This draws the top pixels of the shelf above the current one 

     Rect source = new Rect(0, mShelfHeight - top, mShelfWidth, mShelfHeight); 
     Rect dest = new Rect(x, 0, x + mShelfWidth, top);    

     canvas.drawBitmap(background, source, dest, null);    
    }   


    super.dispatchDraw(canvas); 
} 

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK && this.selectedBook != null) { 
     this.selectedBook = null; 
     invalidate(); 
     return true; 
    } 

    return false; 
} 

}

我得到了他的答案,從她的 background scrolling with item in gridview

相關問題