XxxInflater的使用

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);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值