【问题标题】:creating a xml layout from a custom layout. is it possible?从自定义布局创建 xml 布局。可能吗?
【发布时间】:2011-02-07 05:46:17
【问题描述】:

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.
         } 
    }
}

【问题讨论】:

    标签: android android-layout layout


    【解决方案1】:

    使用布局充气器:

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

    【讨论】:

      【解决方案2】:

      您可以使用

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

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

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

      【讨论】:

      • 实际问题描述在这里stackoverflow.com/questions/4926478/…。因为我无法修复它:作为一种解决方法,我正在尝试对我的所有视图使用相同的活动。
      • 导致我对同一活动使用多个视图的原始问题现已解决。谢谢。
      猜你喜欢
      • 2018-01-23
      • 2012-10-28
      • 2016-10-12
      • 2016-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-14
      相关资源
      最近更新 更多