Android:结合xml文件和自定义视图

时间:2015-01-29 12:49:27

标签: android xml

我想要做的是左侧有两个按钮,右侧有imageView。这些按钮可激活相机或从图库中显示照片并将其显示在imageView上。此外,如果用户触摸图像,则矩形形状跟随用户的移动。

我制作了一个包含按钮和imageView的xml文件。 然后,我使用画布为矩形形状创建了一个自定义视图。

我在想的是在imageView上设置touchListener并根据坐标,app在画布上生成与imageView重叠的矩形。

以下是我的问题,我可以同时使用xml文件和自定义视图吗?那意味着这两件事可以重叠吗?

我试过

v = new DrawingTheBall(this); // v is my custom view
setContentView(v);
setContentView(R.layout.activity_main);

没有错误,但只出现第一个被叫的。

如果重叠是不可能的,那么我应该只将按钮和imageView放在自定义视图类中吗?

2 个答案:

答案 0 :(得分:2)

是的,您可以使用XML中的布局资源和以编程方式一起创建的自定义视图。 为此你需要:

  1. 在XML中为自定义视图指定视图持有者并为其提供ID(可以是根布局)。例如:

    <LinearLayout android:id="@+id/customViewContainer" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical">

  2. setContentView(R.layout.xml_resource);

  3. 找到自定义视图容器:
  4. LinearLayout custonViewContainer = (LinearLayout)findViewById(R.id.customViewContainer);

    1. 向容器添加自定义视图:
    2. custonViewContainer.addView(view);

      这就是它!

答案 1 :(得分:0)

您还可以将自定义视图放在XML布局文件中:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <com.package.DrawingTheBall
        android:id="@+id/drawingTheBall"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</LinearLayout>