大家好我们这一节讲的是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)。下面我们看一下运行效果吧。
布局文件
main.xml
<?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/myButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ShowCustomDialog"/>
</LinearLayout>
custom_dialog.xml
<?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="#7CFC00" />
</LinearLayout>
Activity01 类
package xiaohang.zhimeng;
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 Activity01 extends Activity implements OnClickListener{
private Button button;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
button = (Button)findViewById(R.id.myButton);
button.setOnClickListener(this);
}
@Override
public void onClick(View v) {
showCustomDialog();
}
public void showCustomDialog(){
AlertDialog.Builder builder;
AlertDialog alertDialog;
Context mContext = Activity01.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 xh blog");
ImageView image = (ImageView)layout.findViewById(R.id.image);
//给ImageView 设置图标
image.setImageResource(R.drawable.icon);
builder = new AlertDialog.Builder(mContext);
builder.setView(layout);
alertDialog = builder.create();
alertDialog.show();
}
}
原文来自:
http://www.cnblogs.com/tt_mc/archive/2010/05/28/1746307.html
源码见附件。
- 大小: 29.8 KB
分享到:
相关推荐
在Android开发中,`LayoutInflater`是一个非常重要的工具类,它主要用于将XML布局...如果你希望了解更多关于`LayoutInflater`的细节,建议阅读博客文章(链接已给出),该文章可能会涵盖更多实用示例和深入的技术讲解。
在Android Studio的项目中,`AndroidStudy01`可能是一个包含了示例代码的工程,它可能包含了一个使用`LayoutInflater`的例子,如动态添加布局、自定义视图等。通过学习这个项目,开发者可以更深入地理解`...
接下来,我们看一个简单的使用LayoutInflater加载布局的示例代码: ```java LayoutInflater inflater = LayoutInflater.from(this); View view = inflater.inflate(R.layout.my_layout, null); ``` 在这个例子中,...
总的来说,这个"LayoutInflater inflate 示例demo"是一个很好的学习资源,它将帮助你深入理解Android中布局动态加载的过程,以及如何根据需要有效地使用`LayoutInflater`。通过实践,你将能够熟练掌握这一关键的...
在这个示例中,`showCustomDialog()`方法首先使用LayoutInflater的`inflate()`方法加载`custom_dialog.xml`,然后找到并初始化Dialog中的ImageView和TextView。接下来,我们可以根据需要设置这些视图的属性,如图像...
在Android开发中,`LayoutInflater` 是一个至关重要的工具,它负责将XML布局文件转换为视图对象(View objects)。这个过程被称为布局的...理解和熟练使用`LayoutInflater`对于任何Android开发者都是必不可少的技能。
在android中,LayoutInflater有点类似于Activity的findViewById(id),不同的是LayoutInflater是用来找layout下的xml布局文件,并且实例化!而findViewById()是找具体xml下的具体 widget控件(如:Button,TextView等)。...
"Android开发实现自定义Toast、LayoutInflater使用其他布局示例" Android开发实现自定义Toast、LayoutInflater使用其他布局是 Android 应用程序开发中非常重要的一部分。 Toast 是 Android 应用程序中最常用的提示...
总之,理解和正确使用LayoutInflater.inflate()的参数是避免Android开发中出现布局问题的关键。在使用时,确保提供适当的父容器,合理设置`attachToRoot`,并且始终关注视图的测量和布局过程。通过这些注意事项,...
在Android开发中,`LayoutInflater` 是一个至关重要的工具类,用于将XML布局文件转换为视图对象并添加到视图层次结构中。标题提到的"layoutinflater中嵌套layoutinflater"涉及到的是在一个布局中使用`LayoutInflater...
总的来说,`LayoutInflater` 的`inflate()` 方法是Android应用中动态加载布局的关键,它与`findViewById()` 和`ViewStub` 配合使用,可以灵活地处理各种界面构建需求。了解这些方法的正确使用方式,对于提升Android...
convertView = LayoutInflater.from(getContext()).inflate(R.layout.list_item, parent, false); } // 设置视图内容 TextView textView = (TextView) convertView.findViewById(R.id.text_view); textView....
在这个"Android GridView使用示例"中,我们将深入探讨如何在Android应用程序中有效地使用GridView。 首先,我们需要在XML布局文件中声明GridView。一个基本的GridView声明可能如下所示: ```xml android:id="@+...
Activity 在界面创建时需要将 XML 布局文件中的内容加载进来,正如我们在 ListView 或者 RecyclerView 中需要将 Item 的布局加载进来一样,都是使用 LayoutInflater 来进行操作的。 LayoutInflater 实例的获取有多种...
在这个"Android GridView使用例子"中,我们将深入探讨如何有效地利用GridView来构建动态且交互性强的用户界面。 1. **GridView的基本概念** GridView继承自AbsListView,它可以显示一列或多列水平对齐的项目。每个...
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); View popupView = inflater.inflate(R.layout.popup_window_layout, null); // 创建PopupWindow实例,并设置其...
使用`inflate()` 的示例: ```java View view = inflater.inflate(R.layout.my_layout, null); // 不附加到任何视图 ViewGroup parent = findViewById(R.id.parent_view_group); view = inflater.inflate(R.layout....