- 浏览: 1189163 次
文章分类
最新评论
-
sucheng2016:
### Error querying database. C ...
Sybase数据类型 -
Jiafun:
加油吧,少年
这可能是人生最后一个暑假 -
hermesdai:
少年很努力啊...学习了
一名毕业生的程序员之路 -
panda_eyes:
...
一名毕业生的程序员之路 -
yyue_li1988:
哥们,你写却是挺好的。同样给我们这种工作一两年的人,感触颇深啊 ...
一名毕业生的程序员之路
android开发--LayoutInflater类
Inflater英文意思是膨胀,在android中大概是扩展的意思吧。
LayoutInflater的作用类似于 findViewById(),不同点是LayoutInflater是用来找layout下xml布局文件,并且实例化!而 findViewById()是找具体xml下的具体 widget控件(如:Button,TextView等)。
它的用法有2种:
Java代码
LayoutInflater的作用类似于 findViewById(),不同点是LayoutInflater是用来找layout下xml布局文件,并且实例化!而 findViewById()是找具体xml下的具体 widget控件(如:Button,TextView等)。
它的用法有2种:
Java代码
- 1.LayoutInflaterinflater=LayoutInflater.from(this);
- 2.Viewview=inflater.inflate(R.layout.ID,null);
- 3.或者干脆并成一句:
- 4.Viewview=LayoutInflater.from(this).inflate(R.layout.ID,null);
- LayoutInflaterinflater=LayoutInflater.from(this);
- Viewview=inflater.inflate(R.layout.ID,null);
或者干脆并成一句:
- Viewview=LayoutInflater.from(this).inflate(R.layout.ID,null);
另一种方法:
Java代码
Java代码
- 1.LayoutInflaterinflater=(LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
- 2.Viewview=inflater.inflate(R.layout.ID,null);
- LayoutInflaterinflater=(LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
- Viewview=inflater.inflate(R.layout.ID,null);
上面2种方法本质上是一样的,看下面的源码,form()调用的就是getSystemService():
Java代码
Java代码
- 1.publicstaticLayoutInflaterfrom(Contextcontext){
- 2.LayoutInflater LayoutInflater=
- 3.(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- 4.if(LayoutInflater==null){
- 5.thrownewAssertionError("LayoutInflater
not found.");
- 6.}
- 7.returnLayoutInflater;
- 8.}
-
publicstaticLayoutInflaterfrom(Contextcontext){
- LayoutInflater LayoutInflater=
-
(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
-
if(LayoutInflater==null){
-
thrownewAssertionError("LayoutInflater
not found.");
-
}
-
returnLayoutInflater;
- }
另外getSystemService()是Android很重要的一个API,它是Activity的一个方法,根据传入的NAME来取得对应的Object,然后转换成相应的服务对象。以下介绍系统相应的服务。
传入的Name 返回的对象 说明
WINDOW_SERVICE WindowManager 管理打开的窗口程序
LAYOUT_INFLATER_SERVICE LayoutInflater 取得xml里定义的view
ACTIVITY_SERVICE ActivityManager 管理应用程序的系统状态
POWER_SERVICEPowerManger 电源的服务
ALARM_SERVICE AlarmManager 闹钟的服务
NOTIFICATION_SERVICE NotificationManager 状态栏的服务
KEYGUARD_SERVICE KeyguardManager 键盘锁的服务
LOCATION_SERVICE LocationManager 位置的服务,如GPS
SEARCH_SERVICE SearchManager 搜索的服务
VEBRATOR_SERVICE Vebrator 手机震动的服务
CONNECTIVITY_SERVICE Connectivity 网络连接的服务
WIFI_SERVICE WifiManager Wi-Fi服务
TELEPHONY_SERVICE TeleponyManager 电话服务
WINDOW_SERVICE WindowManager 管理打开的窗口程序
LAYOUT_INFLATER_SERVICE LayoutInflater 取得xml里定义的view
ACTIVITY_SERVICE ActivityManager 管理应用程序的系统状态
POWER_SERVICEPowerManger 电源的服务
ALARM_SERVICE AlarmManager 闹钟的服务
NOTIFICATION_SERVICE NotificationManager 状态栏的服务
KEYGUARD_SERVICE KeyguardManager 键盘锁的服务
LOCATION_SERVICE LocationManager 位置的服务,如GPS
SEARCH_SERVICE SearchManager 搜索的服务
VEBRATOR_SERVICE Vebrator 手机震动的服务
CONNECTIVITY_SERVICE Connectivity 网络连接的服务
WIFI_SERVICE WifiManager Wi-Fi服务
TELEPHONY_SERVICE TeleponyManager 电话服务
Java代码
- 1.//基本用法
- 2.publicvoidshowCustomDialog(){
- 3.AlertDialog.Builder builder;
- 4.AlertDialog alertDialog;
- 5.ContextmContext=AppActivity.this;
- 6.//下面俩种方法都可以
- 7.//LayoutInflater inflater = getLayoutInflater();
- 8.LayoutInflaterinflater=(LayoutInflater)
- 9.mContext.getSystemService(LAYOUT_INFLATER_SERVICE);
- 10.Viewlayout=inflater.inflate(R.layout.custom_dialog,null);
- 11.TextViewtext=(TextView)layout.findViewById(R.id.text);
- 12.text.setText("Hello,
Welcome to Mr Wei's blog!");
- 13.ImageViewimage=(ImageView)layout.findViewById(R.id.image);
- 14.image.setImageResource(R.drawable.icon);
- 15.builder=newAlertDialog.Builder(mContext);
- 16.builder.setView(layout);
- 17.alertDialog=builder.create();
- 18.alertDialog.show();
- 19.}
- 20.}
- 21.
- 22.protectedvoidshowToast(inttype){
- 23.Toast.makeText(this,"*********",Toast.LENGTH_LONG).show();
- 24.
- 25.LayoutInflater li=(LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- 26.Viewview=li.inflate(R.layout.toast,null);
- 27.
- 28.Toast toast=newToast(this);
- 29.toast.setView(view);
- 30.toast.setDuration(type);
- 31.toast.show();
- 32.}
- //基本用法
-
publicvoidshowCustomDialog(){
- AlertDialog.Builder builder;
- AlertDialog alertDialog;
-
ContextmContext=AppActivity.this;
- //下面俩种方法都可以
-
//LayoutInflater inflater = getLayoutInflater();
- LayoutInflaterinflater=(LayoutInflater)
- mContext.getSystemService(LAYOUT_INFLATER_SERVICE);
-
Viewlayout=inflater.inflate(R.layout.custom_dialog,null);
- TextViewtext=(TextView)layout.findViewById(R.id.text);
-
text.setText("Hello,
Welcome to Mr Wei's blog!");
-
ImageViewimage=(ImageView)layout.findViewById(R.id.image);
-
image.setImageResource(R.drawable.icon);
- builder=newAlertDialog.Builder(mContext);
- builder.setView(layout);
- alertDialog=builder.create();
- alertDialog.show();
-
}
-
}
-
protectedvoidshowToast(inttype){
- Toast.makeText(this,"*********",Toast.LENGTH_LONG).show();
- LayoutInflater li=(LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
-
Viewview=li.inflate(R.layout.toast,null);
- Toast toast=newToast(this);
- toast.setView(view);
- toast.setDuration(type);
- toast.show();
- }
Android 动态加载布局
http://labs.chinamobile.com/mblog/532767_72588?fdlayenxoaencysxyant
由于前段时间项目需要,需要在一个页面上加载根据不同的按钮加载不同的布局页面,当时想到用 tabhot 。不过美工提供的界面图完全用不上tabhot ,所以想到了动态加载的方法来解决这一需求。在这里我整理了一下,写了一个 DEMO 希望大家以后少走点弯路。
首先,我们先把界面的框架图画出来,示意图如下:
中间白色部门是一个线性布局文件,我喜欢在画图的时候用不同的颜色将一块布局标示出来,方便查看。布局文件代码如下:
Xml代码
Xml代码
- 1.<?xmlversion="1.0"encoding="utf-8"?>
- 2.<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- 3.android:orientation="vertical"android:layout_width="fill_parent"
- 4.android:layout_height="fill_parent">
- 5.
- 6.
- 7.<LinearLayout android:orientation="horizontal"
- 8.android:layout_width="wrap_content"android:layout_height="wrap_content">
- 9.<Button android:text="加载ListView"android:id="@+id/Button01"
- 10.android:layout_width="wrap_content"android:layout_height="wrap_content">
- 11.</Button>
- 12.<Button android:text="加载另外一个页面"android:id="@+id/Button02"
- 13.android:layout_width="wrap_content"android:layout_height="wrap_content"></Button>
- 14.</LinearLayout>
- 15.<LinearLayout android:id="@+id/LinearLayout01"android:background="#FFFFFF"
- 16.android:layout_width="fill_parent"android:layout_height="fill_parent"></LinearLayout>
- 17.</LinearLayout>
-
<?xmlversion="1.0"encoding="utf-8"?>
-
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"android:layout_width="fill_parent"
- android:layout_height="fill_parent">
-
<LinearLayout android:orientation="horizontal"
- android:layout_width="wrap_content"android:layout_height="wrap_content">
-
<Button android:text="加载ListView"android:id="@+id/Button01"
- android:layout_width="wrap_content"android:layout_height="wrap_content">
-
</Button>
-
<Button android:text="加载另外一个页面"android:id="@+id/Button02"
- android:layout_width="wrap_content"android:layout_height="wrap_content"></Button>
-
</LinearLayout>
-
<LinearLayout android:id="@+id/LinearLayout01"android:background="#FFFFFF"
- android:layout_width="fill_parent"android:layout_height="fill_parent"></LinearLayout>
- </LinearLayout>
从上面的效果图可以看出,那块白色的线性布局是用来动态加载传进来的布局文件。好了,我们就来做如果把布局文件动态的加载进来。下面我们一步一步来实现这个效果,首先,先把需要的 XML 勾画出来,分为步骤如下。
新建一个布局用来存放 ListView 页面,代码如下:
Xml代码
Xml代码
- 1.<?xmlversion="1.0"encoding="UTF-8"?>
- 2.<LinearLayout android:id="@+id/layout"
- 3.android:layout_width="fill_parent"android:layout_height="fill_parent"
- 4.xmlns:android="http://schemas.android.com/apk/res/android">
- 5.<ListView android:id="@+id/ListView01"android:layout_width="wrap_content"
- 6.android:layout_height="wrap_content"></ListView>
- 7.</LinearLayout>
-
<?xmlversion="1.0"encoding="UTF-8"?>
-
<LinearLayout android:id="@+id/layout"
- android:layout_width="fill_parent"android:layout_height="fill_parent"
- xmlns:android="http://schemas.android.com/apk/res/android">
-
<ListView android:id="@+id/ListView01"android:layout_width="wrap_content"
- android:layout_height="wrap_content"></ListView>
- </LinearLayout>
新建一个 ListView 每一行数据的样式,代码如下:
Xml代码
- 1.<?xmlversion="1.0"encoding="UTF-8"?>
- 2.<LinearLayout android:id="@+id/LinearLayout01"
- 3.android:layout_width="fill_parent"android:layout_height="fill_parent"
- 4.xmlns:android="http://schemas.android.com/apk/res/android">
- 5.<TextView android:text="@+id/TextView01"android:id="@+id/TextView01"
- 6.android:layout_width="wrap_content"android:layout_height="wrap_content"></TextView>
- 7.</LinearLayout>
-
<?xmlversion="1.0"encoding="UTF-8"?>
-
<LinearLayout android:id="@+id/LinearLayout01"
- android:layout_width="fill_parent"android:layout_height="fill_parent"
- xmlns:android="http://schemas.android.com/apk/res/android">
-
<TextView android:text="@+id/TextView01"android:id="@+id/TextView01"
- android:layout_width="wrap_content"android:layout_height="wrap_content"></TextView>
- </LinearLayout>
新建另外一个页面,用来区分此页面是动态加载的,代码如下:
Xml代码
- 1.<?xmlversion="1.0"encoding="UTF-8"?>
- 2.<LinearLayout android:id="@+id/hellolayout"
- 3.android:layout_width="fill_parent"android:layout_height="fill_parent"
- 4.xmlns:android="http://schemas.android.com/apk/res/android">
- 5.<TextView android:text="HELLO"
- 6.android:layout_width="wrap_content"android:layout_height="wrap_content"></TextView>
- 7.</LinearLayout>
-
<?xmlversion="1.0"encoding="UTF-8"?>
-
<LinearLayout android:id="@+id/hellolayout"
- android:layout_width="fill_parent"android:layout_height="fill_parent"
- xmlns:android="http://schemas.android.com/apk/res/android">
-
<TextView android:text="HELLO"
- android:layout_width="wrap_content"android:layout_height="wrap_content"></TextView>
- </LinearLayout>
实现ListView 的添充数据,这里不详细介绍如何填充ListView 每行数据,有不解的朋友可以回头看我写的文章:点击这里 ,代码如下:
Java代码
- 1.packagecom.terry;
- 2.
- 3.importjava.util.ArrayList;
- 4.importjava.util.HashMap;
- 5.
- 6.importandroid.content.Context;
- 7.importandroid.view.LayoutInflater;
- 8.importandroid.view.View;
- 9.importandroid.view.ViewGroup;
- 10.importandroid.widget.BaseAdapter;
- 11.importandroid.widget.TextView;
- 12.
- 13.publicclasslistAdapterextendsBaseAdapter{
- 14.
- 15.ArrayList<HashMap<String,Object>>list=newArrayList<HashMap<String,Object>>();
- 16.
- 17.privateLayoutInflaterinflater;
- 18.publiclistAdapter(Contextcontex)
- 19.{
- 20.inflater=LayoutInflater.from(contex);
- 21.HashMap<String,Object>map=newHashMap<String,Object>();
- 22.for(inti=0;i<10;i++){
- 23.map.put("name","例子");
- 24.list.add(map);
- 25.}
- 26.
- 27.}
- 28.
- 29.@Override
- 30.publicintgetCount(){
- 31.// TODO Auto-generated method stub
- 32.returnlist.size();
- 33.}
- 34.
- 35.@Override
- 36.publicObjectgetItem(intposition){
- 37.// TODO Auto-generated method stub
- 38.returnlist.get(position);
- 39.}
- 40.
- 41.@Override
- 42.publiclonggetItemId(intposition){
- 43.// TODO Auto-generated method stub
- 44.returnposition;
- 45.}
- 46.
- 47.@Override
- 48.publicViewgetView(intposition,ViewconvertView,ViewGroupparent){
- 49.// TODO Auto-generated method stub
- 50.finalviewHolder myHolder;
- 51.if(convertView==null){
- 52.myHolder=newviewHolder();
- 53.convertView=inflater.inflate(R.layout.list_view_row,null);
- 54.myHolder.tv=(TextView)convertView.findViewById(R.id.TextView01);
- 55.convertView.setTag(myHolder);
- 56.}
- 57.else
- 58.{
- 59.myHolder=(viewHolder)convertView.getTag();
- 60.}
- 61.myHolder.tv.setText(list.get(position).get("name").toString());
- 62.returnconvertView;
- 63.}
- 64.
- 65.}
- packagecom.terry;
-
importjava.util.ArrayList;
-
importjava.util.HashMap;
-
importandroid.content.Context;
-
importandroid.view.LayoutInflater;
-
importandroid.view.View;
-
importandroid.view.ViewGroup;
-
importandroid.widget.BaseAdapter;
-
importandroid.widget.TextView;
-
publicclasslistAdapterextendsBaseAdapter{
-
ArrayList<HashMap<String,Object>>list=newArrayList<HashMap<String,Object>>();
-
privateLayoutInflaterinflater;
-
publiclistAdapter(Contextcontex)
-
{
-
inflater=LayoutInflater.from(contex);
-
HashMap<String,Object>map=newHashMap<String,Object>();
-
for(inti=0;i<10;i++){
-
map.put("name","例子");
-
list.add(map);
-
}
-
}
- @Override
-
publicintgetCount(){
-
// TODO Auto-generated method stub
-
returnlist.size();
-
}
- @Override
-
publicObjectgetItem(intposition){
-
// TODO Auto-generated method stub
-
returnlist.get(position);
-
}
- @Override
-
publiclonggetItemId(intposition){
-
// TODO Auto-generated method stub
-
returnposition;
-
}
- @Override
-
publicViewgetView(intposition,ViewconvertView,ViewGroupparent){
-
// TODO Auto-generated method stub
-
finalviewHolder myHolder;
-
if(convertView==null){
- myHolder=newviewHolder();
- convertView=inflater.inflate(R.layout.list_view_row,null);
- myHolder.tv=(TextView)convertView.findViewById(R.id.TextView01);
- convertView.setTag(myHolder);
-
}
-
else
-
{
- myHolder=(viewHolder)convertView.getTag();
-
}
- myHolder.tv.setText(list.get(position).get("name").toString());
-
returnconvertView;
-
}
- }
项目大纲如下图:
好了,到此我们的准备工作就己经完成,接下来就是要教大家如何实现动态加载上面所画的布局页面了,先看一下效果图:
点击第一个按钮:
- 1.packagecom.terry;
- 2.
- 3.importandroid.app.Activity;
- 4.importandroid.graphics.Color;
- 5.importandroid.os.Bundle;
- 6.importandroid.view.LayoutInflater;
- 7.importandroid.view.View;
- 8.importandroid.view.View.OnClickListener;
- 9.importandroid.widget.Button;
- 10.importandroid.widget.LinearLayout;
- 11.importandroid.widget.ListView;
- 12.importandroid.widget.TextView;
- 13.
- 14.publicclassdynaActivityextendsActivity{
- 15./** Called when the activity is first created. */
- 16.@Override
- 17.publicvoidonCreate(Bundle
savedInstanceState){
- 18.super.onCreate(savedInstanceState);
- 19.setContentView(R.layout.main);
- 20.
- 21.finalLayoutInflaterinflater=LayoutInflater.from(this);
- 22.Buttonbtn=(Button)findViewById(R.id.Button01);
- 23.Buttonbtn2=(Button)findViewById(R.id.Button02);
- 24.finalLinearLayout lin=(LinearLayout)findViewById(R.id.LinearLayout01);
- 25.btn.setOnClickListener(newOnClickListener(){
- 26.
- 27.@Override
- 28.publicvoidonClick(Viewv){
- 29.// TODO Auto-generated method stub
- 30.LinearLayoutlayout=(LinearLayout)inflater.inflate(
- 31.R.layout.listview,null).findViewById(R.id.layout);
- 32.ListViewlv=(ListView)layout.getChildAt(0);
- 33.lv.setAdapter(newlistAdapter(dynaActivity.this));
- 34.lin.removeAllViews();
- 35.lin.addView(layout);
- 36.}
- 37.});
- 38.
- 39.btn2.setOnClickListener(newOnClickListener(){
- 40.
- 41.@Override
- 42.publicvoidonClick(Viewv){
- 43.// TODO Auto-generated method stub
- 44.LinearLayoutlayout=(LinearLayout)inflater.inflate(
- 45.R.layout.hello,null).findViewById(R.id.hellolayout);
- 46.TextView lv=(TextView)layout.getChildAt(0);
- 47.lv.setTextColor(Color.RED);
- 48.lin.removeAllViews();
- 49.lin.addView(layout);
- 50.}
- 51.});
- 52.}
- 53.}
- packagecom.terry;
-
importandroid.app.Activity;
-
importandroid.graphics.Color;
-
importandroid.os.Bundle;
-
importandroid.view.LayoutInflater;
-
importandroid.view.View;
-
importandroid.view.View.OnClickListener;
-
importandroid.widget.Button;
-
importandroid.widget.LinearLayout;
-
importandroid.widget.ListView;
-
importandroid.widget.TextView;
-
publicclassdynaActivityextendsActivity{
-
/** Called when the activity is first created. */
- @Override
-
publicvoidonCreate(Bundle
savedInstanceState){
-
super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
-
finalLayoutInflaterinflater=LayoutInflater.from(this);
-
Buttonbtn=(Button)findViewById(R.id.Button01);
-
Buttonbtn2=(Button)findViewById(R.id.Button02);
-
finalLinearLayout lin=(LinearLayout)findViewById(R.id.LinearLayout01);
- btn.setOnClickListener(newOnClickListener(){
- @Override
-
publicvoidonClick(Viewv){
-
// TODO Auto-generated method stub
- LinearLayoutlayout=(LinearLayout)inflater.inflate(
- R.layout.listview,null).findViewById(R.id.layout);
-
ListViewlv=(ListView)layout.getChildAt(0);
- lv.setAdapter(newlistAdapter(dynaActivity.this));
- lin.removeAllViews();
- lin.addView(layout);
-
}
-
});
- btn2.setOnClickListener(newOnClickListener(){
- @Override
-
publicvoidonClick(Viewv){
-
// TODO Auto-generated method stub
- LinearLayoutlayout=(LinearLayout)inflater.inflate(
- R.layout.hello,null).findViewById(R.id.hellolayout);
- TextView lv=(TextView)layout.getChildAt(0);
- lv.setTextColor(Color.RED);
- lin.removeAllViews();
- lin.addView(layout);
-
}
-
});
-
}
- }
上面通过使用LayoutInflater 每次点击按钮时候去读取布局文件,然后找到布局文件里面的各个VIEW 操作完VIEW 后加载进我们setContentView 方面里面的要放的布局文件里面,每次动态加载文件必需 调用 removeAllViews方法,清除之前的加载进来的 View 。是不是很简单?当然动态加载VIEW 还有许多种方法,多尝试不同写法。可能会领会不一样的心得,祝你早上掌握android 的开发技术。
相关推荐
主要介绍了Android开发之获取LayoutInflater对象的方法,结合实例形式总结分析了Android获取LayoutInflater对象的常用技巧,需要的朋友可以参考下
主要介绍了Android开发实现自定义Toast、LayoutInflater使用其他布局,涉及Android自定义Toast与界面布局相关操作技巧,需要的朋友可以参考下
主要介绍了Android开发中LayoutInflater用法,结合实例形式分析了LayoutInflater类的功能、作用、使用方法及相关注意事项,需要的朋友可以参考下
经常在开发中,需要将Recyclerview滑动到某个位置,然后定位这一个具体项,将他显示到顶部,用RecyclerView的默认移动的方法并不能实现这一点 但是,利用LinearLayoutManager,可以很方便的实现这一点。 不多说,直接...
在android中,LayoutInflater有点类似于Activity的findViewById(id),不同的是LayoutInflater是用来找layout下的xml布局文件,并且实例化!而findViewById()是找具体xml下的具体 widget控件(如:Button,TextView等)。...
LayoutInflater类在我们日常开发中经常会用到,最近在使用中就遇到了一些问题,所有下面这篇文章主要给大家总结了关于Android中使用LayoutInflater要注意的一些坑,希望通过这篇能让大家避免走一些弯路,需要的朋友...
但如果稍微有些工作经验的人就知道,这个类有多么重要,它是连接布局XMl和Java代码的桥梁,我们常常疑惑,为什么Android支持在XML书写布局? 我们想到的必然是Android内部帮我们解析xml文件,LayoutInflater就是帮...
前言 Activity 在界面创建时需要将 XML 布局文件中的内容加载进来,正如我们在 ListView 或者 RecyclerView 中需要将 Item 的布局加载进来一样,都是使用 ...由于 Android 系统源码中关于 Content 部分采用的是装饰模
对于有一定Android开发经验的同学来说,一定使用过LayoutInflater.inflater()来加载布局文件,但并不一定去深究过它的原理,比如 1.LayoutInflater为什么可以加载layout文件? 2.加载layout文件之后,又是怎么变成供...
80、获得 LayoutInflater 实例的三种方式 125 81、获得屏幕像素的两种方法 126 82、ShowDialog(int id); 126 83、透明效果的实现 128 84、根据网络或GPS获得经纬度 128 85、TextView 130 90、获取存储卡和手机内部...
Proteus : 带数据绑定的JSON LayoutInflater。实现通过 JSON 实现原生 UI 布局
本文主要介绍Android 中Inflate 方法的用法, 在开发Android应用过程中,可以在程序中应用 Inflate()方法加载新布局,希望能帮助有需要的朋友
LayoutInflater在开发中使用频率很高,但是一直没有太知道LayoutInflater.from(context).inflate()的真正用法,今天就看看源码的流程。 首先来看from()的源码: /** * Obtains the LayoutInflater from the ...
Android LayoutInflater.inflate()详解 深入理解LayoutInflater.inflate() 由于我们很容易习惯公式化的预置代码,有时我们会忽略很优雅的细节。LayoutInflater以及它在Fragment的onCreateView()中填充View的方式...
传智播客_Andorid教程_20天从零到精通精通Android开发视频_第05天 1、SQlite数据库简介 2、SQliteOpenHelper介绍获取 3、数据库升级 4、直接执行sql操作数据库,增删改查 5、通过谷歌封装的api操作数据库,增删改查 ...
Android 中LayoutInflater.inflate()方法的介绍 最近一直想弄明白LayoutInflater对象的inflate方法的用法,今天做了实例。 <LinearLayout android:id=@+id/ll_item_Group android:layout_width=match_parent ...