从自定义布局创建xml布局。可能吗?

时间:2011-02-07 05:46:18

标签: android android-layout layout

MainActivity.java:

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.setTitle(R.string.app_name);
        setContentView(new SampleView(this));
    }
}

SampleView.java:

public class SampleView extends View {

    @Override
    protected void onDraw(Canvas canvas) {
        if (certaincondition = true) {
            //add elements to canvas etc
        } else {
            //How do I do the below? The layout is defined in xml. 
            //I do not want to use Intent. Please help me

            //create a layout from resource R.layout.idAbout and transfer control.
         } 
    }
}

2 个答案:

答案 0 :(得分:0)

使用布局inflater:

View newRootViewElement;
LayoutInflater li = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
newRootViewElement= li.inflate(R.layout.idAbout, null);

答案 1 :(得分:0)

您可以使用

来扩充布局
View.inflate(getContext(), R.layout.idAbout, viewParent);

其中viewParentViewParent,它将是膨胀视图的父级(可以是null)。

但是你想做什么?从onDraw()开始新活动或修改视图层次结构有点奇怪。您可能希望将runnable发布到Handler,它将在事件循环的下一个循环中执行您想要的操作。要开始新活动(例如显示应用的“关于”信息),您应该查看Intent课程。