[转]Android高手进阶教程(五)之----Android 中LayoutInflater的使用!-阿里云开发者社区

开发者社区> zting科技> 正文

[转]Android高手进阶教程(五)之----Android 中LayoutInflater的使用!

简介:
+关注继续查看

声明:eoe文章著作权属于作者,受法律保护,转载时请务必以超链接形式附带如下信息

原文作者: Android_Tutor

原文地址: http://my.eoe.cn/androidtutor/archive/1327.html

大家好我们这一节讲的是LayoutInflater的使用,在实际开发种LayoutInflater这个类还是非常有用的,它的作用类似于 findViewById()
不同点是LayoutInflater是用来找layout下xml布局文件,并且实例化!而findViewById()是找具体xml下的具体 widget控件(如:Button,TextView等)。为了让大家容易理解我做了一个简单的Demo,主布局main.xml里有一个TextView和一个Button,当点击Button,出现 Dialog,而这个Dialog的布局方式是我们在layout目录下定义的custom_dialog.xml文件(里面左右分布,左边 ImageView,右边TextView)。
效果图如下:
0_1271864838V442.gif
下面我将详细的说明Demo的实现过程:

1、新建一个 Android工程,我们命名为LayoutInflaterDemo.
2、修改main.xml布局,里面主要在 原来基础上增加了一个Button.代码如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
<?xml version="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"  
    >  
<TextView    
    android:layout_width="fill_parent"   
    android:layout_height="wrap_content"   
    android:text="@string/hello"  
    />  
<Button  
    android:id="@+id/button"  
    android:layout_width="wrap_content"  
    android:layout_height="wrap_content"  
    android:text="ShowCustomDialog"  
    />  
</LinearLayout>

3.定义对话框的布局方式,我们在layout目录下,新建一个名为 custom_dialog.xml文件具体代码如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
<?xml version="1.0"   
encoding="utf-8"?>  
<LinearLayout   
xmlns:android="http://schemas.android.com/apk/res/android"  
              android:orientation="horizontal"  
              android:layout_width="fill_parent"  
              android:layout_height="fill_parent"  
              android:padding="10dp"  
              >  
    <ImageView android:id="@+id/image"  
               android:layout_width="wrap_content"  
               android:layout_height="fill_parent"  
               android:layout_marginRight="10dp"  
               />  
    <TextView android:id="@+id/text"  
              android:layout_width="wrap_content"  
              android:layout_height="fill_parent"  
              android:textColor="#FFF"  
              />  
</LinearLayout>

4.修改主程序LayouInflaterDemo.java代码如下:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package com.android.tutor;  
import android.app.Activity;  
import android.app.AlertDialog;  
import android.content.Context;  
import android.os.Bundle;  
import android.view.LayoutInflater;  
import android.view.View;  
import android.view.View.OnClickListener;  
import android.widget.Button;  
import android.widget.ImageView;  
import android.widget.TextView;  
public class LayoutInflaterDemo extends Activity implements   
OnClickListener {  
      
    private Button button;  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
          
        button = (Button)findViewById(R.id.button);  
        button.setOnClickListener(this);  
    }  
    @Override  
    public void onClick(View v) {  
          
        showCustomDialog();  
    }  
      
    public void showCustomDialog()  
    {  
        AlertDialog.Builder builder;  
        AlertDialog alertDialog;  
        Context mContext = LayoutInflaterDemo.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();  
    }  
}

5、最后执行之,点击Button,将得到上述效果。

好 今天就到此为止,睡觉了,大家有什么不明白的请留言~谢谢!



本文转自Work Hard Work Smart博客园博客,原文链接:http://www.cnblogs.com/linlf03/archive/2013/03/13/2958168.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【转】Android下使用Properties文件保存程序设置
原文:http://jerrysun.blog.51cto.com/745955/804789 废话不说,直接上代码。    读取.properties文件中的配置:  String strValue = "";  Properties props = new Properties();  try {      props.
600 0
Android Native禁止使用系统私有库详解
解读Android Native对于系统私有库的限制,老版本的黑科技代码在N版本之后都可能导致APP崩溃。
1764 0
分享录制的正则表达式入门、高阶以及使用 .NET 实现网络爬虫视频教程
我发布的「正则表达式入门以及高阶教程」,欢迎学习。 课程简介 正则表达式是软件开发必须掌握的一门语言,掌握后才能很好地理解到它的威力; 课程采用概念和实验操作 4/6 分隔,帮助大家理解概念后再使用大量的实例加深对概念的理解; 实例操作是对概念最好的理解,也是学习新语言最有效的办法; 在课程中也穿插着大量软件开发的技巧和大家分享; 应该是把晦涩的正则表达式讲解的最生动的课程; 掌握了正则表达式后,您一定会觉得这是一门最值得掌握的语言。
921 0
Python数据分析之anaconda安装和使用
今天开始学习Python数据分析了,说到Python数据分析,大家都会推荐使用anaconda,但作为一个初学者,总是很多疑虑,但在实践中解决了一部分,先和大家分享分享。
989 0
使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【外传】——Attribute Routing
原文:使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【外传】——Attribute Routing 系列导航地址http://www.cnblogs.com/fzrain/p/3490137.html 题外话:由于这个技术点是新学的,并不属于原系列,但借助了原系列的项目背景,故命名外传系列,以后也可能在这个系列中附加一些新的技术。
1017 0
使用新版Android Studio检测内存泄露和性能
内存泄露,是Android开发者最头疼的事。可能一处小小的内存泄露,都可能是毁于千里之堤的蚁穴。 怎么才能检测内存泄露呢?网上教程非常多,不过很多都是使用Eclipse检测的, 其实1.3版本以后的Android Studio 检测内存非常方便, 如果结合上MAT工具,LeakCanary插件,一切就变得so easy了。 熟悉Android Studio界面 工欲
1274 0
+关注
3550
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载