精华内容
下载资源
问答
  • LayoutInflater

    2019-11-06 21:13:54
    获取LayoutInflater 对象 有三种方法 LayoutInflater inflater=LayoutInflater.from(this); LayoutInflater inflater=getLayoutInflater(); LayoutInflater inflater=(LayoutInflater)this.getSystemService(LAYOUT_...
    1. 获取LayoutInflater 对象 有三种方法
      LayoutInflater inflater=LayoutInflater.from(this);
      LayoutInflater inflater=getLayoutInflater();
      LayoutInflater inflater=(LayoutInflater)this.getSystemService(LAYOUT_INFLATER_SERVICE);
    2. inflate方法 public View inflate(@LayoutRes int resource, @Nullable ViewGroup root, boolean attachToRoot)
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
          LinearLayout ll = (LinearLayout) findViewById(R.id.ll);
          LayoutInflater inflater = LayoutInflater.from(this);
          inflater.inflate(R.layout.linearlayout, ll,true);
      }
      
     当root不为null,attachToRoo为true时候,会自动将第一个参数所指定的R.layout.linearlayout,添加到第二个参数所指定的view中,如果我在最后一行添加 II.addView(inflate)方法 则会报错
     java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
    当 root不为null,attachToRoot为false,如果我在最后一行添加 II.addView(inflate)方法 可以运行,和正常一样。II.addView(inflate)方法,我们也可以在xml界面中直接添加
    当root为null,attachToRoot无论为null或者不为null都一样,但是linearlayout II并没有处于某一个容器中,所以它的根节点的宽高属性会失效,这个时候不管我给linearlayout的根节点的宽高设置什么,都是没有效果的,它都是包裹button,如果我修改button,则button会立即有变化,因为button是处于某一个容器中的。
    
    
    
     
    
    
    
    
    
    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,337
精华内容 4,134
热门标签
关键字:

layoutinflater