在Android片段中将可绘制对象放置在布局中的视图上

5
我认为标题已经涵盖了它的意思 :) 我有一个可绘制对象,可以获取 .png 图片并通过手势进行操作。我还有一个带有背景图片的 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个回答

2

我通过在该片段的LinearLayout包装器中添加一个ID来解决了这个问题,然后在使用其XML填充片段后,通过addView(view)向其中添加可绘制视图的实例。

片段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;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接