Android中的LayoutInflater的运用
2015-07-25 20:46
477 查看
在Android中我们常常运用findViewById来寻找xml中的一个个控件(Button,TextView等等),但是我们能运用的只能是setContentView指向的单个xml中有的控件。当我们想要实现点击按钮运用另一个xml的布局的时候,此时我们还是运用findViewById的话,将会报错。于是,便诞生了LayoutInflater这个方法来实现这样得想法。话不多说,下面用一个简单的运用来实现。
MainActivity.java
activity_main.xml
custom_dialog.xml
MainActivity.java
package com.whisker.layoutinflater.activity; import android.app.Activity; import android.app.AlertDialog; 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 MainActivity extends Activity { private Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button)findViewById(R.id.button); button.setOnClickListener(buttonListener); } private OnClickListener buttonListener = new OnClickListener() { @Override public void onClick(View v) { AlertDialog.Builder builder; AlertDialog alertDialog; LayoutInflater inflater = (LayoutInflater) MainActivity.this.getSystemService(LAYOUT_INFLATER_SERVICE); View layout = inflater.inflate(R.layout.custom_dialog, null); TextView textView = (TextView) layout.findViewById(R.id.text); textView.setText("Hello,Welcome to my blog!"); ImageView imageView = (ImageView) layout.findViewById(R.id.image); imageView.setImageResource(R.drawable.ic_launcher); builder = new AlertDialog.Builder(MainActivity.this); builder.setView(layout); alertDialog = builder.create(); alertDialog.show(); } }; }
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.whisker.layoutinflater.activity.MainActivity" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" /> <Button android:id="@+id/button" 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:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <ImageView android:id="@+id/image" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_marginRight="10dp"/> <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="match_parent"/> </LinearLayout>
相关文章推荐
- 关于隐式Intent的理解
- android Fragment 入门
- Android Service与Activity之间通信的几种方式
- Android 仿美团网,大众点评购买框悬浮效果之修改版
- Android 重写系统Crash处理类,保存Crash信息到SD卡 和 完美退出程序的方法
- Android操作SQLite数据库基本模式
- Android空指针异常或许只是一个简单的小失误
- Android 图像压缩,和LRU算法使用的推荐链接
- android studio上imageloader初探
- 深入剖析Android四大组件(一)——Activity生命周期详解
- 关于Android四大组件的学习总结
- Android 那些你所不知道的Bitmap对象详解
- Android 限制只输入某些值包括数字、字母等
- Android 解析AsyncTask(一)
- 关于android中layout_gravity和gravity对View的影响
- Android Studio快捷键大全
- Android高效布局
- 如何修改Android系统的版本号
- Android获得Manifest在<meta-data>元件的值
- Android四大组件之BroadcastReceveier