2

나는 레이아웃을 팽창시키고 드래그 가능한 그리드 뷰에 추가하려고 시도한다.하지만 내가 얻는 것은 모두 노란색의 sqaure이다. 드래그 가능한보기의 addView() 메소드는 단일보기 만 선택합니다. 예를 들어 textView 또는 imageView를 추가하면 텍스트 뷰가 표시됩니다. 선형 레이아웃을 추가하면 선형 레이아웃의 배경 무늬 (일명 선형 레이아웃) 만 표시됩니다. 그러나 선형 레이아웃 자식은 아닙니다 (이미지 및 텍스트보기). DGV (드래그 GRIDVIEW는) 다음 뷰 그룹 확장 코드입니다 : 선형 레이아웃의 추가이미지 뷰 및 텍스트 뷰가 뷰에 표시되지 않습니까?

:

LayoutInflater inflater = LayoutInflater.from (getActivity()); 
View cellView = inflater.inflate (R.layout.celllayout, null); 
if (cellView != null) 
Log.d ("Snap", "cellView != null"); 
TextView textView = (TextView) cellView.findViewById (R.id.grid_label); 
textView.setText (word); 
ImageView imageView = (ImageView) cellView.findViewById (R.id.grid_image); 
imageView.setImageBitmap (getThumb (word)); 

dgv.addView (cellView); 

선형 레이아웃 :

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="#FFF000" 
android:gravity="center" 
android:orientation="vertical" 
android:padding="5dp" > 

<TextView 
android:id="@+id/grid_label" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_gravity="center_horizontal" 
android:layout_marginTop="5dip" 
android:text="@string/grid_label" 
android:textColor="#c31d36" 
android:textSize="15sp" /> 
<ImageView 
android:id="@+id/grid_image" 
android:layout_width="150dip" 
android:layout_height="150dip" 
android:layout_gravity="center_horizontal" 
android:contentDescription="An Image" 
android:background="#ffff0000"/> 

</LinearLayout> 

DGV :

@Override 
public void addView (View child) { 
    super.addView (child); 
    Log.d ("Draggable", "Draggable-addView"); 

    newPositions.add (-1); 
} 

어떤 아이디어가? 더 많은 정보를 제공해야합니까? 내 유일한 해결책은 imageview를 사용자 정의하고 ondraw를 무시하고 내가 원하는 것을 수행하는 것입니다. 그러나 그것은 매우 해킹이되고 확장 할 수 없습니다. 어떤 도움을 주시면 감사하겠습니다.

답변

2

이것은 DraggableGridView의 알려진 문제점입니다. - 불행히도 - 나는 고치려고하지 않았습니다. 내가 DGV를 썼을 때, 나는 전망이 어떻게 배치되었는지를 완전히 파악하지 못했습니다. DGV를 배치하기 전에 각 어린이를 측정하도록하십시오. 이 라인에 배치하기 전에

getChildAt(i).measure(MeasureSpec.makeMeasureSpec(childSize, MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(childSize, MeasureSpec.EXACTLY)); 

: 같은 추가 힌트, 톰에 대한

getChildAt(i).layout(xy.x, xy.y, xy.x + childSize, xy.y + childSize); 
+0

감사합니다. 그건 나를 도왔다. 어쨌든 lib에 감사드립니다. –

관련 문제