如何在我的xml文件上显示自定义视图?

时间:2016-03-06 20:59:38

标签: android

Snippet of my code

如上图所示,类视图在MainActivity中声明,因此它没有XML文件。我想在该自定义视图上添加一个按钮并对其进行操作。

如果类View在不扩展视图的java类中,我如何在xml中显示自定义视图?

2 个答案:

答案 0 :(得分:1)

我认为你不能在视图中设置任何其他视图。 check description,我认为只有ViewGroupLinearLayoutRelativeLayout等扩展ViewGroup的布局只能使用addView(View view)添加其他视图,

示例如下

您可以创建一个xml布局文件并将自定义视图放入其中。

示例包含自定义视图的xml文件

<?xml version="1.0" encoding="utf-8"?>
<com.example.package.MyView 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

java代码然后在视图中对其进行充气。

// Inflate your xml view using layout inflater.
LayoutInflater inflater = getSystemService(Context.LAYOUT_INFLATER_SERVICE);

View myView = (MyView) inflater.inflate(R.layout.example, null);

// now create a container class or map any of it from main_activity.xml layout.
LinearLayout linear = new LinearLayout(this);

/* LinearLayout linear = (LinearLayout) findViewById(R.layout.myLayout); */

// if you have created it programatically, set its width and height as following
linear.setLayoutParams(new ViewGroup.LayoutParams(
            ViewGroup.LayoutParams.MATCH_PARENT,    // width
            ViewGroup.LayoutParams.MATCH_PARENT));  // height

// else mention it in layout xml file.

linear.removeAllViews(); // clear layout before setting new one.

linear.addView(myView); // set custom view inside layout.

现在你可以分配操作你的myView了。如果你还想添加按钮。在xml文件中创建按钮并以编程方式膨胀或创建,并将其添加到linear.addView(View view);

答案 1 :(得分:0)

在XML中创建自定义布局,为其指定视图。然后,您可以将视图添加到其他布局。有关创建自定义视图的详细信息,请查看this tutorial