android 提供了一个工具 能够把int 的 *.xml 文件转化为 View 这就是XxxInflater 主要有2种:
* LayoutInflater
* MenuInflater
通常使用:
MenuInflater mInflater = getMenuInflater();
LayoutInflater lInflater = getLayoutInflater();
上述二者仅在 Activity 中才有效!
MenuInflater具体使用方法
比如现在在res目录下创建menu文件夹有一个关于menu的描述文件 menu_item.xml 如下:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/Item_1"
android:title="Item_1"
android:icon="@android:drawable/ic_menu_add"
/>
<item
android:id="@+id/Item_2"
android:title="Item_2" />
<item
android:id="@+id/Item_3"
android:title="Item_3"
android:enabled="false" />
</menu>
现在把它转化为 View.
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.layout.menu_item, menu);
return true;
}
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.Item_1:
break;
case R.id.Item_2:
break;
case R.id.Item_3:
break;
}
return super.onOptionsItemSelected(item);
}
更复杂一点的menu:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:title="Play" android:id="@+id/media_play"
android:icon="@android:drawable/ic_media_play"/>
<item android:title="Pause" android:id="@+id/media_pause"
android:icon="@android:drawable/ic_media_pause"/>
<item android:title="File" android:id="@+id/file">
<menu>
<item android:title="Open..." android:id="@+id/file_open"/>
<item android:title="Save" android:id="@+id/file_save"/>
<item android:title="Save as" android:id="@+id/file_saveas"/>
<item android:title="Exit" android:id="@+id/file_exit"/>
</menu>
</item>
<item android:title="Edit" android:id="@+id/edit">
<menu>
<group>
<item android:title="Copy" android:id="@+id/edit_copy"/>
<item android:title="Paste" android:id="@+id/edit_paste"/>
<item android:title="Cut" android:id="@+id/edit_cut"/>
<item android:title="Delete" android:id="@+id/edit_delete"/>
</group>
</menu>
</item>
</menu>
LayoutInflater 和 MenuInflater 的使用基本类似 也是根据int 的 *.xml 文件得到 View 所不同的就是 嵌套原因 所以多了一个参数-ViewGroup 用来表示 父View 比如:在 LinearLayout layout 里面有一个 TextView 且其用tv.xml 描述 那么应该如下使用
LayoutInflater inflater = getLayoutInflater();
inflater.inflate(R.layout.tv,layout);
LayoutInflater更详细的用法见下面:
http://gundumw100.iteye.com/admin/blogs/825503