动态添加组件(XML)

1.利用LayoutInflater的inflate动态加载XML
mLinearLayout = (LinearLayout)findViewById(R.id.LinearLayout_ID);
LayoutInflater layoutInflater = LayoutInflater.from(context);
View view = layoutInflater.inflate(resource--需要加载的XML, null);
XML:resource = R.layout.XML-Name;
mLinearLayout.removeAllViewsInLayout();移除当前LinearLayout的内容
mLinearLayout.addView(view);添加XML到LinearLayout

设置Width和Hight:
   LinearLayout.LayoutParams.FILL_PARENT、mLinearLayout.getLayoutParams().width等
另:
mLinearLayout.addView(v,
   new LinearLayout.LayoutParams(mLinearLayout.getLayoutParams().width,
   mLinearLayout.getLayoutParams().height));

2.利用View.inflate加载xml
Layout1.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
     android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

<TextView android:id="@+id/box_0"
   android:layout_width="fill_parent" android:layout_height="40px"
   android:background="#ff00ff00" android:text="This is main layout" />
<LinearLayout
   android:id="@+id/box_1" android:layout_width="fill_parent"
   android:layout_height="wrap_content" android:layout_below="@+id/box_0">
</LinearLayout>
</RelativeLayout>

Layout2.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/box" android:orientation="horizontal"
android:layout_width="fill_parent" android:layout_height="fill_parent" >

<TextView android:id="@+id/box_3" android:layout_width="fill_parent"
   android:layout_height="40px" android:background="#ffff0000"
   android:text="this is 2" />
</LinearLayout>

setContentView(R.layout.layout_1);
    LinearLayout ll = (LinearLayout) findViewById(R.id.box_1);
    View vv = View.inflate(this, R.layout.layout_2, null);
    ll.addView(vv,      new LinearLayout.LayoutParams   ll.getLayoutParams ().width,ll.getLayoutParams().height));

这个主要是在某一个控件里面动态加载。

3.也可以利用inflate加载menu 首先在res/menu下创建自己的Menu XML—my_menu.xml:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/home"
    android:title="Home"
    android:icon="@drawable/home" >
</item>
<item android:id="@+id/help" android:title="Help"
    android:icon="@drawable/help" >
</item>
<item android:id="@+id/save" android:title="Save n Quit"
    android:icon="@drawable/save_quit" >
</item>
<item android:id="@+id/exit" android:title="Quit"
    android:icon="@drawable/exit" >
</item>
</menu>

public class Welcome extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.main);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.my_menu, menu);
    return true;
}

@Override
   public boolean onOptionsItemSelected(MenuItem item) {
     switch (item.getItemId()) {
     case R.id.home:
     // TODO
     break;
      case R.id.help:
      // TODO
     break;
     case R.id.save:
     // TODO
    break;
     case R.id.exit:
     // TODO
    break;
   }
   return true;
   }
}

4.两种方法:

LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.toast_sms,
   (ViewGroup) findViewById(R.id.toast_sms_root));

LayoutInflater mInflater = LayoutInflater.from(context);
View myView = mInflater.inflate(R.layout.customToast, null);
TextView sender = (TextView) myView.findViewById(R.id.sender);
TextView message = (TextView) myView.findViewById(R.id.message);

时间: 2025-01-01 11:19:58

动态添加组件(XML)的相关文章

Android使用addView动态添加组件

在项目开发中,我们经常需要进行动态添加组件,其中可添加的部分有两项:布局和组件 其中,添加的布局主要有RelativeLayout型(相对布局)的和LinearLayout(线性布局) 添加的组件主要有文本显示框,编辑框,按钮等组件. 下面,就让我们来进行实现: 首先我们创建一个新的项目,删除MainActivity.class中没有的代码,仅留下protected void onCreate(Bundle savedInstanceState)函数 往布局文件中添加一个新的组件: 1. add

Angular使用总结 --- 通过指令动态添加组件

之前自己写的公共组件,都是会先引入,需要调起的时候再通过service控制公共组件状态.值.回调函数什么的.但是有一些场景不适合这种方式,还是动态添加组件更加好.通过写过的一个小组件来总结下. 创建组件 场景:鼠标移动到图标上时,展示解释性的说明文字.那就需要创建一个普通的tooltip组件.如下: <aside class="hover-tip-wrapper"> <span>{{tipText}}</span> </aside> HT

Android笔记(六十一)动态添加组件

想要一个功能,点击按钮,可以在已有的布局上,新添加一组组件. 动态的创建组件,本质上还是创建组件,只不过是在程序中根据逻辑来创建.大致步骤是找到要创建控件的位置,然后将要创建的组件添加进去. 看代码: MainActivity.java package com.example.test; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Bu

vue2.0动态添加组件

方法一.<template> <input type="text" v-model='componentName'> <button @click='add'>click me to add a component</button> </template> <script> // 引入要添加的所有组件 import component1 from './components/component1.vue' impo

ScrollView动态添加组件

main.xml代码如下: <?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" a

easyui 使用jquery动态添加组件样式问题

可以使用$.parser.parse();这个方法进行处理: 例如: $.parser.parse(); 表示对整个页面重新渲染,渲染完就可以看到easyui原来的样式了: var targetObj = $("<input name='mydate' class='easyui-datebox'>").appendTo("#id"); $.parser.parse(targetObj); 表示重新渲染某个特定的组件.

New UI-Java代码动态添加控件或xml布局

New UI-Java代码动态添加控件或xml布局  --转载请注明出处:coder-pig,欢迎转载,请勿用于商业用途! 小猪Android开发交流群已建立,欢迎大家加入,无论是新手,菜鸟,大神都可以,小猪一个人的 力量毕竟是有限的,写出来的东西肯定会有很多纰漏不足,欢迎大家指出,集思广益,让小猪的博文 更加的详尽,帮到更多的人,O(∩_∩)O谢谢! 小猪Android开发交流群:小猪Android开发交流群群号:421858269 新Android UI实例大全目录:http://blog.

Android在布局中动态添加view的两种方法

一.说明 添加视图文件的时候有两种方式:1.通过在xml文件定义layout:2.java代码编写 二.前言说明 1.构造xml文件 2.LayoutInflater 提到addview,首先要了解一下LayoutInflater类.这个类最主要的功能就是实现将xml表述的layout转化为View的功能.为了便于理解,我们可以将它与findViewById()作一比较,二者都是实例化某一对象,不同的是findViewById()是找xml布局文件下的具体widget控件实例化,而LayoutI

unity3d动态操作组件

利用范型,动态操作组件(添加或删除) e.AddComponent<CubeTranslate> ();//动态添加组件 Destroy (e.GetComponent<CubeTranslate> ());//动态删除组件 其中e为动态生成的对象: public GameObject e;