20161104

LayoutInflater

 

public View onCreateView(LayoutInflater inflater, ViewGroup container,

                             Bundle savedInstanceState) {

       View view= inflater.inflate(R.layout.fragment_trigonometoric_graph, container, false);

 

LayoutInflater とは指定したxmlのレイアウト(View)リソースを利用できる仕組み

ちなみにinflateの一般的な意味は、膨らませる、ふくらませるのような意味

 

//MainActivity

package com.example.kunihiro.myapplication;

 

import android.os.Bundle;

import android.support.v7.app.AppCompatActivity;

import android.view.View;

import android.widget.Button;

import android.widget.LinearLayout;

 

public class MainActivity extends AppCompatActivity {

 

    private LinearLayout inflateLayout;

    private boolean flag = false;

 

 

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

 

        inflateLayout = (LinearLayout)findViewById(R.id.linearLayout_in_activitymain_xml);

 

        Button button = (Button)findViewById(R.id.button);

        button.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                if (!flag) {

                    inflateLayout.removeAllViews();

                    getLayoutInflater().inflate(R.layout.inflate1, inflateLayout);

                    //LayoutInflaterはActivityのgetLayoutInflater()メソッドで取得できる。

                    //activitymain.xmlにあるinflateLayoutにinflate1.xmlを入れる

                    flag = true;

                }

                else {

                    inflateLayout.removeAllViews();

                    getLayoutInflater().inflate(R.layout.inflate2, inflateLayout);

                    flag = false;

                }

            }

        });

    }

}

//activity_main.xml

<?xml version="1.0" encoding="utf-8"?>

<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:background="@android:color/holo_green_light"

    tools:context=".MainActivity">

 

    <Button

        android:id="@+id/button"

        android:layout_width="150dp"

        android:layout_height="wrap_content"

        android:layout_gravity="center_horizontal"

        android:layout_margin="40dp"

        android:text="Button" >

    </Button>

 

    <LinearLayout

        android:id="@+id/linearLayout_in_activitymain_xml"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:orientation="vertical" >

    </LinearLayout>

</LinearLayout>

//inflate1.xml inflate2.xmlにはカレンダーと時計をそれぞれに配置する