2016-08-19 1 views
1

의 배경색을 GridLayout에 프로그래밍 방식으로 설정하여 UI를 이와 같이 만들 수 있습니다. enter image description hereImageViews에서 Picasso와 함께로드 된 이미지가 GridLayout에서 넘쳐 흐르고 있습니까?

피카소를 사용하여 서버에서 이미지를로드합니다. 이미지는 정의 된 colspan 및 rowspan을 초과하여 확장됩니다. 나는 왜 이것을 얻고 있는가? 내가 제대로이 그리드에 이미지를 넣을 수 있도록 enter image description here

GridLayout과 XML을

<android.support.v7.widget.GridLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/tableGrid" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_gravity="center_horizontal" 
    android:horizontalSpacing="0dp" 
    android:stretchMode="columnWidth" 
    android:verticalSpacing="0dp" 
    app:alignmentMode="alignBounds" 
    app:columnOrderPreserved="true" 
    app:rowOrderPreserved="true" 
    app:useDefaultMargins="false"/>` 

그리고 Activity

private void setGrids(int totalRows, int totalCols) { 

    int total = gridList.size(); 
    gridLayout.setColumnCount(totalCols); 
    gridLayout.setRowCount(totalRows); 
    for (int i = 0; i < total; i++) { 

     float rowWeight = Float.parseFloat(gridList.get(i).getRowSpan() + "F"); 
     float colWeight = Float.parseFloat(gridList.get(i).getColSpan() + "F"); 

     GridLayout.Spec rowSpan = GridLayout.spec(gridList.get(i).getStartRow(), gridList.get(i).getRowSpan(), rowWeight); 
     GridLayout.Spec colSpan = GridLayout.spec(gridList.get(i).getStartColumn(), gridList.get(i).getColSpan(), colWeight); 

     GridLayout.LayoutParams gridParam = new GridLayout.LayoutParams(
       rowSpan, colSpan); 

     GridLayout.LayoutParams param = new GridLayout.LayoutParams(); 
     param.height = 0; 
     param.width = 0; 
     ImageView oImageView = new ImageView(this); 
     oImageView.setLayoutParams(new GridLayout.LayoutParams(param)); 

     /* 
     Random rnd = new Random(); 
     int color = Color.argb(255, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256)); 
     oImageView.setBackgroundColor(color); 
     */ 

     Picasso.with(this).load(gridList.get(i).getProductImage()).noFade().into(oImageView); 
     oImageView.setAdjustViewBounds(true); 
     oImageView.setScaleType(ImageView.ScaleType.FIT_XY); 

     gridLayout.addView(oImageView, gridParam); 
    } 
} 

내 그리드 설정 방법은 저를 안내합니다.

답변

2

내 문제가 해결되었습니다. Picasso를 사용하여 이미지를로드하는 중에 문제가 발생했습니다. 라이브러리가 내 이미지 크기를 조정하고있었습니다. 내 이미지로드 라인을

으로 변경했습니다.
Picasso.with(this).load(gridList.get(i).getProductImage()).fit().noFade().into(oImageView); 
관련 문제