LayoutInflater在Android中是“擴展”的意思,作用類似findViewById( ),它在Android開發中的作用是很大的。LayoutInflater經常在BaseAdapter的getView方法中用到,用來獲取整個View並返回。
LayoutInflater與findViewById( )的不同點:
獲得LayoutInflater的三種方法:
第一種:
- LayoutInflater inflater = LayoutInflater.from(this);
- View layout = inflater.inflate(R.layout.main, null);
第二種:
- LayoutInflater inflater = getLayoutInflater();
- View layout = inflater.inflate(R.layout.main, null);
第三種:
- LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
- View layout = inflater.inflate(R.layout.main, null);
getSystemService()是Android很重要的一個API,它是Activity的一個方法,根據傳入 的NAME來取得對應的Object,然後轉換成相應的服務對象。以下介紹系統相應的服務。其中LAYOUT_INFLATER_SERVICE返回的對象是 LayoutInflater,作用是取得XML定義的View。
第一個實例:
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"
- >
- <EditText
- android:id="@+id/text"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- />
- <Button
- android:id="@+id/btn1"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- />
- <Button
- android:id="@+id/btn2"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- />
- </LinearLayout>
MainActivity.java
- package com.lingdududu.test;
- import android.app.Activity;
- import android.graphics.Color;
- import android.os.Bundle;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.widget.Button;
- import android.widget.EditText;
- public class MainActivity extends Activity {
- private EditText etx;
- private Button confirmBtn;
- private Button cancleBtn;
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- LayoutInflater inflater = getLayoutInflater();
- View layout = inflater.inflate(R.layout.main, null);
- etx = (EditText)layout.findViewById(R.id.text);
- etx.setBackgroundColor(Color.WHITE);
- etx.setHint("請輸入你的學號");
- confirmBtn = (Button)layout.findViewById(R.id.btn1);
- confirmBtn.setText("確定");
- cancleBtn = (Button)layout.findViewById(R.id.btn2);
- cancleBtn.setText("取消");
- setContentView(layout);
- }
- }
效果圖:
650) this.width=650;">