2012-08-01 3 views
3

제목이 다룰 것 같아요 :) 제스처로 조작 할 수있는 .png 사진을 가져 오는 드로어 블 오브젝트가 있습니다. 또한이 drawable 객체 뒤에 있어야하는 배경 이미지가있는 xml 레이아웃이 있습니다. 모든 것은 단편에서 일어납니다.안드로이드 조각에있는 레이아웃의 뷰에 드로어 블 오브젝트 배치하기

코드를 실행하고이 부분을 가져 오면 png가 표시되고 제스처가 작동하지만 부풀린 레이아웃이없고 뒤로 버튼 누름 응용 프로그램에 충돌이 발생합니다 (setContentView를 사용하고 있기 때문에 추측하고 있습니다.) 조각이 없기 때문에 백 스택이 없다면 어떻게해야합니까?).

나중에 다른 레이어를 장면에 추가하겠습니다.

내 질문은 어떻게 둘 다 XML 레이아웃으로 조각을 팽창시키고 그 위에 드로어 블을 표시 할 수 있으며, 나중에 그 위에 다른 뷰를 추가 할 수 있습니까?

코드는이 조각을 위해 다음과 같이 진행됩니다

public class RoomFragment extends Fragment { 

ViewGroup mRoot; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

    mRoot = (ViewGroup) inflater.inflate(R.layout.room_fragment, null); 

    /** Placing furniture .png element in SandboxView */ 
    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), 
      R.drawable.furniture); 
    View view = new SandboxView(this.getActivity(), bitmap); 
    this.getActivity().setContentView(view); // Replace with inflater? 

    return mRoot; 

}} 

감사합니다!

답변

1

이 조각의 LinearLayout 래퍼에 ID를 추가 한 다음 XML로 조각을 부 풀린 다음 addView (view)를 사용하여 Drawable보기의 인스턴스를 추가하여 해결했습니다.

조각 XML : 조각 코드의

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/bitmapBox" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@drawable/room" 
    android:gravity="bottom|center" 
    android:orientation="vertical" > 
</LinearLayout> 

조각 :

ViewGroup mRoot; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

    mRoot = (ViewGroup) inflater.inflate(R.layout.room_fragment, null); 

    /** placing furniture element in SandboxView */ 
    LinearLayout myLayout = (LinearLayout) mRoot 
      .findViewById(R.id.bitmapBox); 

    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), 
      R.drawable.furniture); 

    View view = new SandboxView(this.getActivity(), bitmap); 

    myLayout.addView(view); 

    return mRoot;