• android中LayoutInflater的使用


    Inflater英文意思是膨胀,在Android中应该是扩展的意思吧。 
    LayoutInflater的作用类似于 findViewById(),不同点是LayoutInflater是用来找layout文件夹下的xml布局文件,并且实例化!而 findViewById()是找具体某一个xml下的具体 widget控件(如:Button,TextView等)。

       (0)她可以有很多地方可以使用,如BaseAdapter的getView中,自定义Dialog中取得view中的组件widget等等。
    它的用法有2种:

    Java代码
    view plaincopy to clipboardprint?  
    LayoutInflater inflater = LayoutInflater.from(this);     
    View view=inflater.inflate(R.layout.ID, null);    
    或者干脆并成一句:    
    View view=LayoutInflater.from(this).inflate(R.layout.ID, null);    

    另一种方法: 

    Java代码
    view plaincopy to clipboardprint?  
    LayoutInflater inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);    
    View view=inflater.inflate(R.layout.ID, null);   


    上面2种方法本质上是一样的,看下面的源码,form()调用的就是getSystemService(): 
    Java代码
    public static LayoutInflater from(Context context) {       
        LayoutInflater LayoutInflater =       
                (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);       
        if (LayoutInflater == null) {       
            throw new AssertionError("LayoutInflater not found.");       
        }       
        return LayoutInflater;       
    }     


    另外getSystemService()是Android很重要的一个API,它是Activity的一个方法,根据传入的NAME来取得对应的Object,然后转换成相应的服务对象。以下介绍系统相应的服务。 

    传入的Name 返回的对象 说明
    WINDOW_SERVICE WindowManager 管理打开的窗口程序
    LAYOUT_INFLATER_SERVICE LayoutInflater 取得xml里定义的view
    ACTIVITY_SERVICE ActivityManager 管理应用程序的系统状态
    POWER_SERVICE PowerManger 电源的服务
    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代码
    public void showCustomDialog(){    
      AlertDialog.Builder builder;    
      AlertDialog alertDialog;    
      Context mContext = AppActivity.this;    
    //下面俩种方法都可以    
      //LayoutInflater inflater = getLayoutInflater();    
      LayoutInflater inflater = (LayoutInflater)     
    mContext.getSystemService(LAYOUT_INFLATER_SERVICE);    
      View layout = inflater.inflate(R.layout.custom_dialog,null);    
      TextView text = (TextView) layout.findViewById(R.id.text);    
      text.setText("Hello, Welcome to Mr Wei's blog!");    
      ImageView image = (ImageView) layout.findViewById(R.id.image);    
      image.setImageResource(R.drawable.icon);    
      builder = new AlertDialog.Builder(mContext);    
      builder.setView(layout);    
      alertDialog = builder.create();    
      alertDialog.show();    
     }    
    }    
        
    protected void showToast(int type) {      
            Toast.makeText(this, "*********", Toast.LENGTH_LONG).show();      
          
            LayoutInflater li = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);      
            View view = li.inflate(R.layout.toast, null);      
                  
            Toast toast = new Toast(this);      
            toast.setView(view);      
            toast.setDuration(type);      
            toast.show();      
        }      

    转载于:http://dev.10086.cn/cmdn/wiki/index.php?doc-view-6066.html

  • 相关阅读:
    使用某些 DOCTYPE 时会导致 document.body.scrollTop 失效
    VB.NET 笔记1
    知识管理系统Data Solution研发日记之一 场景设计与需求列出
    知识管理系统Data Solution研发日记之五 网页下载,转换,导入
    折腾了这么多年的.NET开发,也只学会了这么几招 软件开发不是生活的全部,但是好的生活全靠它了
    分享制作精良的知识管理系统 博客园博客备份程序 Site Rebuild
    知识管理系统Data Solution研发日记之四 片段式数据解决方案
    知识管理系统Data Solution研发日记之二 应用程序系列
    知识管理系统Data Solution研发日记之七 源代码与解决方案
    知识管理系统Data Solution研发日记之三 文档解决方案
  • 原文地址:https://www.cnblogs.com/jita/p/2866339.html
Copyright © 2020-2023  润新知